在REST服务中读取JWT令牌内容

时间:2016-07-19 20:57:22

标签: spring jwt spring-security-oauth2

您好我正在使用Spring Security Oauth2和JWTTokenStore。我希望在用户使用资源请求将其发回后,从REST服务中读取令牌内容。 例如: 卷曲-i -H"授权:持票人" http://localhost:8080/api/UserDetails

在UserDetails服务中读取令牌。

谢谢。

2 个答案:

答案 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");