从Spring Security Oauth2中的Token Store检索访问和刷新令牌的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Spring Security Oauth2中的Token Store检索访问和刷新令牌的方法相关的知识,希望对你有一定的参考价值。
如果您在令牌的内存存储中使用,是否有办法从Spring Security Oauth2中的TokenStore检索访问和刷新令牌?
是否有任何端点可以使这更容易,还是有任何其他解决方法?
根据我的分析,TokenEndpoint除了/ oauth / token之外不提供任何端点:https://docs.spring.io/spring-security/oauth/apidocs/org/springframework/security/oauth2/provider/endpoint/TokenEndpoint.html
如果您在配置中将TokenStore定义为Bean,则可以将其注入您自己的控制器中:
@Configuration
@EnableAuthorizationServer
public class AuthServerOAuth2Config extends AuthorizationServerConfigurerAdapter {
//...
@Bean
public TokenStore tokenStore() {
return new InMemoryTokenStore();
}
}
在控制器中,您可以提供一个读取令牌并返回它们的处理程序:
@RestController
@RequestMapping("/api/tokens")
public class TokensEndpoint {
@Autowired
TokenStore tokenStore;
@GetMapping
public ResponseEntity<List<String>> allTokens(@RequestParam String clientId) {
Collection<OAuth2AccessToken> tokens = tokenStore.findTokensByClientId(clientId);
List<String> tokenValues = tokens.stream().map(OAuth2AccessToken::getValue).collect(Collectors.toList());
return ResponseEntity.ok(tokenValues);
}
}
您应该注意端点本身是否正确安全。
然后你可以像这样检索访问令牌:
curl -X GET 'http://localhost:8080/api/tokens?clientId=sampleClientId'
如果您还想包含刷新令牌,则只需要在处理程序方法中扩展映射。
以上是关于从Spring Security Oauth2中的Token Store检索访问和刷新令牌的方法的主要内容,如果未能解决你的问题,请参考以下文章
Spring security oauth2 - 从 OAuth2 主体获取自定义数据
一个应用程序中的 Spring Security OAuth2 身份验证和表单登录
Rest API 中的 Spring Security Oauth2
使用 Spring Security 的 OAuth 2.0 中的 resourceId 是啥意思
面对拒绝访问 (403) - spring security oauth2 中的禁止错误
Spring boot,Security,OAuth2:是不是可以使用自定义 AuthorizationCodeResourceDetails?身份验证服务器需要重定向 url 中的特定参数