欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

OAuth2简易实战(三)-JWT

程序员文章站 2022-04-08 21:31:50
1. OAuth2简易实战(三) JWT 1.1. 与OAuth2授权码模式差别 1. 授权服务器代码修改 2. 可以看到主要是增加了 JwtAccessTokenConverter JWT访问令牌转换器和JwtTokenStore JWT令牌存储组件,通过AuthorizationServerEn ......

1. oauth2简易实战(三)-jwt

1.1. 与oauth2授权码模式差别

  1. 授权服务器代码修改
@configuration
@enableauthorizationserver
public class oauth2authorizationserver extends authorizationserverconfigureradapter {

    @autowired
    private authenticationmanager authenticationmanager;

    @bean
    public jwtaccesstokenconverter accesstokenconverter() {
        jwtaccesstokenconverter converter = new jwtaccesstokenconverter();
        converter.setsigningkey("test-secret");
        return converter;
    }

    @bean
    public jwttokenstore jwttokenstore() {
        return new jwttokenstore(accesstokenconverter());
    }

    @override
    public void configure(authorizationserverendpointsconfigurer endpoints) throws exception {
        endpoints
            .authenticationmanager(authenticationmanager)
            .tokenstore(jwttokenstore())
            .accesstokenconverter(accesstokenconverter());
    }

    @override
    public void configure(clientdetailsserviceconfigurer clients) throws exception {
        clients.inmemory()
            .withclient("clientapp")
            .secret("112233")
            .scopes("read_userinfo")
            .authorizedgranttypes(
                "password",
                "authorization_code",
                "refresh_token");
    }

}
  1. 可以看到主要是增加了 jwtaccesstokenconverter jwt访问令牌转换器和jwttokenstore jwt令牌存储组件,通过authorizationserverendpointsconfigurer 授权服务器端点配置加入两个实例

1.2. 操作步骤

  1. 使用password模式,访问以下链接,获得token,记得加上授权账户密码
http://localhost:8080/oauth/token?password=xyz&grant_type=password&username=bobo&scope=read_userinfo

OAuth2简易实战(三)-JWT

  1. 返回值
    OAuth2简易实战(三)-JWT
  2. 使用access_token调用,成功
    OAuth2简易实战(三)-JWT

1.3. jwt的特殊性

  1. 可以看到代码改动其实不大,jwt具有自解释的特性,客户端不需要再去授权服务器认证这个token的合法性
  2. 代码中可以看到我们添加了一个签名秘钥test-secret,这个秘钥需要自己保管好
  3. 通过访问 https://jwt.io 把我试验中返回的access_token加入,填上签名秘钥,可以看到验证成功

OAuth2简易实战(三)-JWT

  1. 可以看出来,通过token的解码,参数中带有请求的一些信息,我们通过解码可以直接获取
    OAuth2简易实战(三)-JWT
    OAuth2简易实战(三)-JWT