zoukankan      html  css  js  c++  java
  • OAuth 修改access_token的存储位置

    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)类型。

    正常的结果为:

  • 相关阅读:
    利用html2canvas将html页面截图 js
    微信网页分享功能 js
    json数组排序 js
    数字千位符 js
    调用百度Api读取图片文字 C#
    判断手机移动端js
    网页添加水印js
    css 文字隐藏,鼠标移动显示
    删除某个数据库下所有表
    linux错误记录
  • 原文地址:https://www.cnblogs.com/Edward-Wang/p/13386882.html
Copyright © 2011-2022 走看看