Blueming
V2EX  ›  Java

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

  •  
  •   Blueming · Aug 7, 2020 · 3323 views
    This topic created in 2285 days ago, the information mentioned may be changed or developed.

    目前继承了 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 中 该如何实现呢?

    6 replies  •  2020-08-08 10:38:04 +08:00
    zhenjiachen
    zhenjiachen
    Aug 7, 2020
    1
    继承 DefaultAccessTokenConverter 这个类,然后 set 到 AccessTokenConverter 中就好了
    monkeyk
    monkeyk
    Aug 7, 2020
    2
    看这开源 https://gitee.com/mkk/MyOIDC, 里面有对应的配置与实现
    Blueming
    Blueming
    OP
    Aug 7, 2020
    3
    @zhenjiachen 如何把用户的属性传进去呢
    seliote
    seliote
    Aug 7, 2020
    4
    项目都没了
    viakiba
    viakiba
    Aug 8, 2020
    5
    OAuth2Authentication 这个对象有个 getOAuth2Request() 方法可以获取客户端应用程序的详细信息。你可以看一下这里是怎么存储内容的。比如客户端请求会带一个唯一 id 或者账号啥的,这里可以取到。通过这个唯一 id 就可以取到数据库或者缓存的内容了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1015 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:58 · PVG 02:58 · LAX 10:58 · JFK 13:58
    ♥ Do have faith in what you're doing.