如何更改 jwt 访问令牌的附加信息
Posted
技术标签:
【中文标题】如何更改 jwt 访问令牌的附加信息【英文标题】:How to change an additional information of jwt access token 【发布时间】: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 版本? 【参考方案1】:您应该从令牌中获取元数据(“声明”),然后将它们添加到将返回新令牌的新 JWT 构建器。必须在 HttpResponse 中输入新的 JWT 才能将其转发给客户端。取而代之的是,客户端必须实现一个拦截器,以便以一种舒适且透明的方式检索它。
您必须以 HashMap 的形式获取所有附加信息并将它们放在 OAuth2Authentication 中。 ***.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 中。 ***.com/a/19057480/11951081以上是关于如何更改 jwt 访问令牌的附加信息的主要内容,如果未能解决你的问题,请参考以下文章
仅在 JWT 令牌中而不是在 OAuth2 令牌中添加附加信息
如何将一些附加字段添加到此 Spring Boot 服务生成的 JWT 令牌中?