码迷,mamicode.com
首页 > 数据库 > 详细

OAuth 修改access_token的存储位置

时间:2020-07-28 00:05:24      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:grant   prim   sql   col   lazy   user   改变   turn   redis   

OAuth 修改access_token的存储位置

OAuth 修改access_token的存储位置,将Redis存储换为JDBC存储。

背景

项目需求改变,需要将原本存储在Redis中的access_token变为存储在SQLserver中。

实施

做起来也比较简单,只需要将原来的TokenStore实现从RedisStore改为JdbcTkenStore再在DB中创建oauth_access_token表即可

代码如下:

@Bean
public TokenStore tokenStore() {
    return new JdbcTokenStore(dataSource());
}

DB脚本如下:

Mysql:

create table oauth_access_token (
  token_id VARCHAR(128),
  token BLOB,
  authentication_id VARCHAR(128) PRIMARY KEY,
  user_name VARCHAR(128),
  client_id VARCHAR(128),
  authentication BLOB,
  refresh_token VARCHAR(128)
);

SQLServer

create table oauth_access_token (
  token_id VARCHAR(128),
  token  varbinary(max),
  authentication_id VARCHAR(128) PRIMARY KEY,
  user_name VARCHAR(128),
  client_id VARCHAR(128),
  authentication  varbinary(max),
  refresh_token VARCHAR(128)
);

 字段解释

token_id:该字段的值是将access_token的值通过MD5加密后存储的

token:存储将OAuth2AccessToken.java对象序列化后的二进制数据, 是真实的AccessToken的数据值

authentication_id:该字段具有唯一性, 其值是根据当前的username(如果有),client_id与scope通过MD5加密生成的. 具体实现请参考DefaultAuthenticationKeyGenerator.java类

user_name:登录时的用户名, 若客户端没有用户名(如grant_type="client_credentials"),则该值等于client_id

client_id:你懂得

authentication:存储将OAuth2Authentication.java对象序列化后的二进制数据

refresh_token :该字段的值是将refresh_token的值通过MD5加密后存储的

 

这里需要特别注意的是BOLB类型与varbinary(max)类型。

 

正常的结果为:

技术图片

 

OAuth 修改access_token的存储位置

标签:grant   prim   sql   col   lazy   user   改变   turn   redis   

原文地址:https://www.cnblogs.com/Edward-Wang/p/13386882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!