jwt实现oauth2.0 java_OAuth2.0系列之使用JWT令牌实践教程(八)

@

OAuth2.0系列博客:

1、文章前言介绍

在前面文章中我们学习了OAuth2的一些基本概念,对OAuth2有了基本的认识,也对OAuth2.0的令牌等进行数据库存储,对应博客:jdbc方式的数据存储,然后如果不想存储令牌可以实现?

IDEA中,Ctrl+Alt+B,可以看到TokenStore的实现,有如下几种:

4da4512ee89039c9e255051be621ee22.png

ok,其实对于token存储有如上方式,分别进行介绍:

InMemoryTokenStore,默认存储,保存在内存

JdbcTokenStore,access_token存储在数据库

JwtTokenStore,JWT这种方式比较特殊,这是一种无状态方式的存储,不进行内存、数据库存储,只是JWT中携带全面的用户信息,保存在jwt中携带过去校验就可以

RedisTokenStore,将 access_token 存到 redis 中。

JwkTokenStore,将 access_token 保存到 JSON Web Key。

2、例子实验验证

实验环境准备:

IntelliJ IDEA

Maven3.+版本

新建SpringBoot Initializer项目,可以命名oauth2-jwt

2d4494006de5f9d5ac2abc1d24b54e83.png

cfcd4cbef213762a3536bdd5ff833a80.png

主要加入如下配置:

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-oauth2

org.springframework.cloud

spring-cloud-starter-security

TokenStore:

@Bean

public TokenStore jwtTokenStore() {

//基于jwt实现令牌(Access Token)

return new JwtTokenStore(accessTokenConverter());

}

JwtAccessTokenConverter :

@Bean

public JwtAccessTokenConverter accessTokenConverter(){

JwtAccessTokenConverter converter = new JwtAccessTokenConverter(){

@Override

public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {

String grantType = authentication.getOAuth2Request().getGrantType();

//授权码和密码模式才自定义token信息

if(AUTHORIZATION_CODE.equals(grantType) || GRANT_TYPE_PASSWORD.equals(grantType)) {

String userName = authentication.getUserAuthentication().getName();

// 自定义一些token 信息

Map additionalInformation = new HashMap(16);

additionalInformation.put("user_name", userName);

additionalInformation = Collections.unmodifiableMap(additionalInformation);

((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInformation);

}

OAuth2AccessToken token = super.enhance(accessToken, authentication);

return token;

}

};

// 设置签署k

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值