JustAuth JustAuth
首页
开始使用🔥
  • 使用State
  • 自定义state缓存
  • 自定义第三方平台的OAuth
  • 自定义Scope
  • JustAuth与现有用户系统整合
  • 异常问题
  • 功能问题
  • 数据看板🔥
  • 贡献指南
  • 行为准则
  • 用户权益
  • 贡献者们
  • 社区配套 (opens new window)
  • 项目荣誉🔥
  • 精选文章
社区活动
  • 关于
  • 友情链接
  • 其他开源
  • 更新记录
收藏
GitHub (opens new window)

JustAuth

开箱即用的整合第三方登录的开源组件
首页
开始使用🔥
  • 使用State
  • 自定义state缓存
  • 自定义第三方平台的OAuth
  • 自定义Scope
  • JustAuth与现有用户系统整合
  • 异常问题
  • 功能问题
  • 数据看板🔥
  • 贡献指南
  • 行为准则
  • 用户权益
  • 贡献者们
  • 社区配套 (opens new window)
  • 项目荣誉🔥
  • 精选文章
社区活动
  • 关于
  • 友情链接
  • 其他开源
  • 更新记录
收藏
GitHub (opens new window)
  • 使用State
    • state使用的流程
    • 创建state(开发者)
    • 缓存state(JustAuth)
    • 清理state(JustAuth)
  • 自定义state缓存
  • 自定义第三方平台的OAuth
  • 自定义Scope
  • JustAuth与现有用户系统整合
  • 高级特性
JustAuth
2021-10-06

使用State

# state使用的流程

在JustAuth中state参数的使用流程如下:

  1. 获取authorizeUrl时创建state(开发者创建,如果不创建则系统默认生成)
  2. 缓存state(JustAuth执行)
  3. 内置的缓存调度器自动清除已过期的state(JustAuth执行)

# 创建state(开发者)

state在OAuth授权流程中是一个非必要但很重要的参数,就如名词解释中描述的:state是用来保持授权会话流程完整性,防止CSRF攻击的安全的随机的参数,由开发者生成。

在JustAuth中提供了一个默认的创建state的方法,使用方式:

String state = AuthStateUtils.createState()
1

createState的内部实现其实就是生成了一个UUID(采用 jdk 9 的形式,优化性能),该工具是直接copy自mica (opens new window)(mica是一个SpringBoot微服务高效开发工具集,开源地址:https://github.com/lets-mica/mica (opens new window)),关于mica uuid生成方式的压测结果,可以参考:https://github.com/lets-mica/mica-jmh/wiki/uuid。

除此之外,开发者还可以自己生成特定的state参数。

# 缓存state(JustAuth)

在JustAuth中,内置了一个基于map的state缓存器,默认缓存有效期为3分钟(缓存配置见AuthCacheConfig.java)。AuthCacheConfig中包含两个配置参数:

  • timeout 缓存过期时间,默认3分钟
  • schedulePrune 是否开启定时清理过期state的任务,默认开启。如果不开启,则需要开发者自己对state做处理,防止map存入过多内容

缓存state的操作是在getRealState中触发的,不需要开发者自己处理

/**
 * 获取state,如果为空, 则默认取当前日期的时间戳
 *
 * @param state 原始的state
 * @return 返回不为null的state
 */
protected String getRealState(String state) {
    if (StringUtils.isEmpty(state)) {
        state = UuidUtils.getUUID();
    }
    // 缓存state
    authStateCache.cache(state, state);
    return state;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

注:关于自定义缓存,请参考下节内容。

# 清理state(JustAuth)

JustAuth内置了一个缓存调度器,默认3分钟清理一次过期的state,缓存清理时间可以通过AuthCacheConfig.timeout进行修改,不建议修改太大。

编辑 (opens new window)
#state
Last Updated: 2021/10/06, 18:03:43
自定义state缓存

自定义state缓存→

最近更新
01
AppleID登录
09-13
02
关于
09-13
03
企业微信二维码登录(新)
08-04
更多文章>
Theme by Vdoing | Copyright © 2021-2024

友情链接:UniAdmin | 江如意的博客

Written by Yadong.Zhang | 鲁ICP备17054970号-3 |
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式