如何解决Spring OAuth2从访问令牌字符串中提取主体
我在控制器中收到访问令牌,我需要从字符串访问令牌中提取Principal。在方法参数中不使用身份验证,因为在此对象中将是不同的用户。令牌的简单解码应该会有所帮助。任何人都只从访问令牌字符串知道该怎么做吗? 例子
@RequestMapping(value = "create",method = RequestMethod.POST)
public ResponseEntity create(Authentication authentication,@RequestParam("access_token") String accessToken) {
//extract Principal from accessToken variable
}
解决方法
我不知道您为什么要在请求中发送另一个用户的令牌,我发现这很危险,因为访问令牌包含敏感信息(凭据)。我建议您通过创建类似操作或标识令牌(定义的架构将包含用户ID和要发送的信息)之类的方法来更改标识第二个用户的方式。
如果您还有其他未提及的假设,并且假设访问令牌是Jwt,则必须首先使用算法和用于对其进行哈希处理的私钥对其进行验证。如果它是有效令牌,则可以访问其内容。
@RequestMapping(value = "create",method = RequestMethod.POST)
public ResponseEntity create(Authentication authentication,@RequestParam("access_token") JwtAuthenticationToken accessToken) {
// validate your accessToken
// to access the token details
accessToken.getTokenAttributes().get(A_KEY_IN_YOUR_TOKEN)
}
选中此class
,一段时间后,我设法从访问令牌字符串中获取主体。
@Autowired
private TokenStore tokenStore;
@RequestMapping(value = "create",@RequestParam("access_token") String accessToken) {
tokenStore.readAuthentication(accessToken).getPrincipal();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。