Spring 读取REST服务中的JWT令牌内容

Spring 读取REST服务中的JWT令牌内容,spring,jwt,spring-security-oauth2,Spring,Jwt,Spring Security Oauth2,您好,我正在JWTTokenStore中使用Spring Security Oauth2。我想在用户将令牌内容与资源请求一起发送回来后从REST服务读取令牌内容。 如: curl-i-H“授权:持有人” 读取UserDetails服务中的令牌 谢谢。如果您的请求标头具有jwt令牌。执行以下操作 String jwtToken = request.getHeader("Authorization"); Claims claims = Jwts.parser().setSigningKey("sec

您好,我正在JWTTokenStore中使用Spring Security Oauth2。我想在用户将令牌内容与资源请求一起发送回来后从REST服务读取令牌内容。 如: curl-i-H“授权:持有人”

读取UserDetails服务中的令牌


谢谢。

如果您的请求标头具有jwt令牌。执行以下操作

String jwtToken = request.getHeader("Authorization");
Claims claims = Jwts.parser().setSigningKey("secretkey")
                                .parseClaimsJws(jwtToken).getBody();
claims.getSubject();
claims.getExpiration();

其中,secretkey是创建jwt令牌时使用的密钥。

您可以选择:

((OAuth2AuthenticationDetails) SecurityContextHolder.getContext()
    .getAuthentication().getDetails())
        .getTokenValue();
第一个选项的优点是在集成测试中进行模拟

或:

我真的不知道如何在集成测试中模拟OAuth2Client上下文

或者(如果使用名称“授权”传递令牌):

检查这个项目,它是简单和有效的,并有“授权:持有人”正如你所说的。
@AutoWired
private OAuth2ClientContext oAuth2ClientContext ;

public void getToken() {
    String token = oAuth2ClientContext.getAccessToken().getValue();
}
((ServletRequestAttributes) RequestContextHolder
    .currentRequestAttributes())
        .getRequest().getHeader("Authorization");