如何更改jwt访问令牌的其他信息

时间:2019-08-26 07:29:17

标签: spring spring-security spring-security-oauth2 jwt-auth

我正在使用 Spring Security 并将 JWT 用作访问令牌,当客户端将访问令牌发送到服务器时,我必须更改以下内容的附加信息(元数据)此令牌并返回一个新令牌。

我该如何实现?

我尝试使用此代码,但不起作用

        String authorization = Context.getHeader("Authorization");

        if (authorization != null) {
            String tokenValue = authorization.replace("Bearer", "").trim();
            OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);
            accessToken.getAdditionalInformation().put("activeProfileId", defaultProfileId);
            return accessToken.getValue();
        }

        return null;

1 个答案:

答案 0 :(得分:0)

您应该从令牌中获取元数据(“声明”),然后将其添加到新的JWT构建器中,该构建器将返回新的令牌。必须在HttpResponse中输入新的JWT才能将其转发到客户端。取而代之的是,客户端必须实现拦截器才能以舒适,透明的方式检索它。

您必须以HashMap的形式获取所有其他信息,并将其放入OAuth2Authentication中。 stackoverflow.com/a/19057480/11951081

在ajax中应该是:

https://api.jquery.com/category/ajax/global-ajax-event-handlers/

$.ajaxSetup({
    beforeSend: function (xhr) {
        xhr.setRequestHeader('Authorization', <Jwt>)
    },
    success:function(event,jqXHR,ajaxOptions,data ){
        console.log(ajaxOptions.getResponseHeader('Authorization'))
    }
})