Spring oauth2,使用访问令牌检索用户数据?
Posted
技术标签:
【中文标题】Spring oauth2,使用访问令牌检索用户数据?【英文标题】:Spring oauth2, Use access token to retrieve user data? 【发布时间】:2018-07-03 00:21:27 【问题描述】:我正在使用spring security oauth2
和authorization_code
类型。
Oauth2 客户端成功为用户检索到access_token
。
现在,客户端需要使用access_token
检索电子邮件等用户信息。
但是我找不到教程,示例来说明我如何做到这一点..
【问题讨论】:
您使用的是哪种类型的令牌?智威汤逊??您可以实现自己的 TokenEnhancer 以将自定义数据添加到该令牌。 您通常可以在introspection endpoint 获取有关访问令牌的元数据。 oauth2 在 oauth/check_token 暴露了另一个端点。 【参考方案1】:你有两个选择。
-
通过添加额外声明在令牌响应中添加用户信息,请参阅can I include user information while issuing an access token?
实现用户信息端点
如
@RestController
@ProcessingController
@RequestMapping("/identity/userinfo")
public class UserInfoController
@RequestMapping(value = "", method = RequestMethod.GET)
public ResponseEntity<?> userInfo(Principal principal,
HttpServletRequest request)
return ResponseEntity.ok(principal);
并确保您有一个配置为在该端点使用 oauth2 的 resourceServer
@Configuration
public class ResourceServerConfig
@Autowired
private ResourceServerTokenServices defaultTokenServices;
@Bean
protected ResourceServerConfiguration identityResources()
ResourceServerConfiguration resource = new ResourceServerConfiguration()
// Switch off the Spring Boot @Autowired configurers
public void setConfigurers(List<ResourceServerConfigurer> configurers)
super.setConfigurers(configurers);
;
resource.setConfigurers(Arrays.asList(new ResourceServerConfigurerAdapter()
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception
resources.resourceId(ResourceId.IDENTITY_API.getName())
.tokenServices(defaultTokenServices);
@Override
public void configure(HttpSecurity http) throws Exception
http
.requestMatchers()
.antMatchers("/identity/**")
.and()
.authorizeRequests()
.antMatchers("/identity/userinfo/**").hasAnyAuthority("ROLE_USER_INFO")
.anyRequest().authenticated();
));
resource.setOrder(3);
return resource;
【讨论】:
以上是关于Spring oauth2,使用访问令牌检索用户数据?的主要内容,如果未能解决你的问题,请参考以下文章
使用 spring-boot-starter-oauth2-client 检索 OAuth2 3-legged 身份验证的访问令牌
如何使用代码授权流在 Spring 应用程序中提取 Oauth2 访问令牌?
Spring Boot OAuth2:如何检索用户令牌信息详细信息