oauth2 redis mysql_使用 JWT、Redis、MySQL 存储 OAuth2.0 数据~

摘要: 原创出处 http://www.iocoder.cn/Spring-Security/OAuth2-learning-store/ 「芋道源码」欢迎转载,保留摘要,谢谢!1. 概述

2. 数据库存储器

3. Redis 存储器

4. JWT 存储器

666. 彩蛋“

本文在提供完整代码示例,可见 https://github.com/YunaiV/SpringBoot-Labs 的 lab-68-spring-security-oauth 目录。

原创不易,给点个 Star 嘿,一起冲鸭!

1. 概述

在《芋道 Spring Security OAuth2 入门》文章中,我们完成了 Spring Security OAuth 框架的学习。但是我们在文末中也提到,采用基于内存的 InMemoryTokenStore,实现访问令牌和刷新令牌的存储。它会存在两个明显的缺点:重启授权服务器时,令牌信息会丢失,导致用户需要重新授权。

多个授权服务器时,令牌信息无法共享,导致用户一会授权成功,一会授权失败。

因此,本文我们来学习 Spring Security OAuth 提供的其它存储器。TokenStore 是 Spring Security OAuth 定义的令牌存储器接口,它有如下实现类:

828e0435942d26d90a3266e8371bf759.pngTokenStore 类图基于数据库的 JdbcTokenStore

基于 Redis 的 RedisTokenStore

基于 JWT 的 JwtTokenStore

下面,我们逐个小节来演示每个 TokenStore 的配置与使用。

2. 数据库存储器“

示例代码对应仓库:授权服务器:lab-68-demo11-authorization-server-by-jdbc-store

本小节,我们使用基于数据库存储的 JdbcTokenStore。

复制出 lab-68-demo11-authorization-server-by-jdbc-store 项目,进行改造接入 JdbcTokenStore 存储器。最终项目如下图所示:

项目结构

2.1 初始化数据库

① 执行 schema.sql 脚本,创建数据库表结构。drop table if exists oauth_client_details;

create table oauth_client_details (

client_id VARCHAR(255) PRIMARY KEY,

resource_ids VARCHAR(255),

client_secret VARCHAR(255),

scope VARCHAR(255),

authorized_grant_types VARCHAR(255),

web_server_redirect_uri VARCHAR(255),

authorities VARCHAR(255),

access_token_validity INTEGER,

refresh_token_validity INTEGER,

additional_information VARCHAR(4096),

autoapprove VARCHAR(255)

);

create table if not exists oauth_client_token (

token_id VARCHAR(255),

token LONG VARBINARY,

authentication_id VARCHAR(255) PRIMARY KEY,

user_name VARCHAR(255),

client_id VARCHAR(255)

);

create table if not exists oauth_access_token (

token_id VARCHAR(255),

token LONG VARBINARY,

authentication_id VARCHAR(255) PRIMARY KEY,

user_name VARCHAR(255),

client_id VARCHAR(255),

authentication LONG VARBINARY,

refresh_token VARCHAR(255)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值