SpringSecurity Oauth2 如何动态自定义 jwt 生成的内容

2020-08-07 11:51:23 +08:00
 Blueming

目前继承了 JwtAccessTokenConverter 类来实现添加额外内容,但是貌似只能硬编码

public class CustomJwtTokenConverter extends JwtAccessTokenConverter {
    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) {
        Map<String, Object> additional = new HashMap<>(16);
        additional.put("key", "value");
        ((DefaultOAuth2AccessToken) oAuth2AccessToken).setAdditionalInformation(additional);
        return super.enhance(oAuth2AccessToken, oAuth2Authentication);
    }
}

我想实现的就是在生成 jwt token 时将当前请求的用户的 userid 放入 token 中 该如何实现呢?

2001 次点击
所在节点    Java
6 条回复
zhenjiachen
2020-08-07 13:10:39 +08:00
继承 DefaultAccessTokenConverter 这个类,然后 set 到 AccessTokenConverter 中就好了
monkeyk
2020-08-07 14:01:01 +08:00
看这开源 https://gitee.com/mkk/MyOIDC, 里面有对应的配置与实现
Blueming
2020-08-07 14:56:32 +08:00
@zhenjiachen 如何把用户的属性传进去呢
seliote
2020-08-07 20:29:43 +08:00
项目都没了
viakiba
2020-08-08 10:37:00 +08:00
OAuth2Authentication 这个对象有个 getOAuth2Request() 方法可以获取客户端应用程序的详细信息。你可以看一下这里是怎么存储内容的。比如客户端请求会带一个唯一 id 或者账号啥的,这里可以取到。通过这个唯一 id 就可以取到数据库或者缓存的内容了。
viakiba
2020-08-08 10:38:04 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696410

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX