您好我正在使用Spring Security Oauth2和JWTTokenStore。我希望在用户使用资源请求将其发回后,从REST服务中读取令牌内容。 例如: 卷曲-i -H"授权:持票人" http://localhost:8080/api/UserDetails
在UserDetails服务中读取令牌。
谢谢。答案 0 :(得分:0)
如果您的请求标头具有jwt标记。执行以下操作
String jwtToken = request.getHeader("Authorization");
Claims claims = Jwts.parser().setSigningKey("secretkey")
.parseClaimsJws(jwtToken).getBody();
claims.getSubject();
claims.getExpiration();
其中secretkey是创建jwt标记时使用的密钥。
答案 1 :(得分:0)
您可以选择这样做:
((OAuth2AuthenticationDetails) SecurityContextHolder.getContext()
.getAuthentication().getDetails())
.getTokenValue();
第一个选项的优点是在集成测试中进行模拟。
或者:
@AutoWired
private OAuth2ClientContext oAuth2ClientContext ;
public void getToken() {
String token = oAuth2ClientContext.getAccessToken().getValue();
}
我真的不知道如何在集成测试中模拟OAuth2ClientContext。
或者(如果使用名称"授权和#34传递令牌):
((ServletRequestAttributes) RequestContextHolder
.currentRequestAttributes())
.getRequest().getHeader("Authorization");