【问题标题】:Read JWT token content in REST Service读取 REST 服务中的 JWT 令牌内容
【发布时间】:2016-11-22 22:20:48
【问题描述】:

您好,我正在使用带有 JWTTokenStore 的 Spring Security Oauth2。一旦用户将其与资源请求一起发回,我想从 REST 服务读取令牌内容。 例如: curl -i -H "授权:承载" http://localhost:8080/api/UserDetails

在 UserDetails 服务中读取令牌。

谢谢。

【问题讨论】:

标签: spring jwt spring-security-oauth2


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您有一些选择:

    ((OAuth2AuthenticationDetails) SecurityContextHolder.getContext()
        .getAuthentication().getDetails())
            .getTokenValue();
    

    第一个选项的优点是在集成测试中进行模拟。

    或者:

    @AutoWired
    private OAuth2ClientContext oAuth2ClientContext ;
    
    public void getToken() {
        String token = oAuth2ClientContext.getAccessToken().getValue();
    }
    

    我真的不知道如何在集成测试中模拟 OAuth2ClientContext。

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

    ((ServletRequestAttributes) RequestContextHolder
        .currentRequestAttributes())
            .getRequest().getHeader("Authorization");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 2019-08-01
      • 2021-06-05
      相关资源
      最近更新 更多