【问题标题】:How to change an additional information of jwt access token如何更改 jwt 访问令牌的附加信息
【发布时间】:2019-12-30 09:14:54
【问题描述】:

我正在使用 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;

【问题讨论】:

  • 你使用的是什么 spring-security-oauth2 版本?

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


【解决方案1】:

您应该从令牌中获取元数据(“声明”),然后将它们添加到将返回新令牌的新 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'))
    }
})

【讨论】:

  • 感谢您的回答,但是如何从当前令牌生成 jwt 令牌?
  • 您必须将所有附加信息作为 HashMap 获取并将它们放在 OAuth2Authentication 中。 stackoverflow.com/a/19057480/11951081
猜你喜欢
  • 2018-03-06
  • 1970-01-01
  • 2017-11-21
  • 2019-12-30
  • 2019-12-08
  • 2016-05-10
  • 2021-08-31
  • 2022-10-15
  • 2021-10-22
相关资源
最近更新 更多