我在一些oauth2实现中看到了授权服务器在发出访问令牌时返回的响应的附加信息。我想知道是否有一种方法可以使用spring-security-oauth2来实现这一点。我希望能够在访问令牌响应中包含一些用户权限,这样我的消费应用程序就不需要管理用户权限,但仍然可以在自己的安全上下文中设置用户并应用任何自己的spring-security检查。
1.如何获得访问令牌响应的信息?
1.如何在oauth2客户端截获该信息并将其设置在安全上下文上?
我认为另一种选择是使用JWT令牌并与客户端应用程序共享适当的信息,以便它们可以从令牌中解析出用户/权限并将其设置在上下文中。这让我更不舒服,因为我更喜欢控制哪些客户端应用程序可以访问此信息(仅受信任的应用程序),并且AFAIK只有授权服务器和资源服务器应该知道如何解析JWT令牌。
6条答案
按热度按时间os8fio9y1#
你需要实现一个自定义的TokenEnhancer,如下所示:
字符串
并将其作为具有相应setter的bean添加到AuthorizationServerConfigurerAdapter中
型
然后在控制器中(例如)
型
我个人使用的是JDBC TokenStore,所以我的“Some autowired stuff here”对应的是一些@Autowired Datasource,PasswordEncoder等等。
希望这有帮助!
5cg8jx4n2#
如果你正在使用Spring的
JwtAccessTokenConverter
或DefaultAccessTokenConverter
,你可以添加你的自定义 CustomTokenEnhancer(参见第一个响应)并使用TokenEnhancerChain来应用它,如下所示:字符串
另一个解决方案是创建一个自定义TokenConverter,它扩展Spring的
JwtAccessTokenConverter
,并使用自定义声明覆盖 enhance() 方法。型
然后:
型
rhfm7lfc3#
连同:
字符串
你必须包括
型
并将所有内容添加到endpoints config:
型
没有它,您的CustomTokenEnhancer将无法工作。
mbskvtky4#
字符串
以下是xml配置:
型
所以我才能在令牌里添加额外的信息
lmyy7pcs5#
1.创建类文件CustomTokenEnhancer
字符串
1.将下面编写的代码粘贴到AuthorizationServerConfig
型
1.粘贴上述代码后导入适当的库
output response of Custom Token Enhancer..click here
6ioyuze26#
我解决这个问题时排除UserDetailsServiceAutoConfiguration。像这样。也许在OAuth2资源服务器中会有帮助。
字符串