当前位置: 首页 > news >正文

设置 OAuth2 访问令牌的签发时间 (issuedAt) 和过期时间 (expiresAt)

Instant issuedAt = Instant.now();
Instant expiresAt = issuedAt.plus(registeredClient.getTokenSettings().getAccessTokenTimeToLive());

上述代码用于设置OAuth2访问令牌的签发时间和过期时间,主要出现在OAuth2认证和授权过程中,特别是在生成访问令牌时

Instant issuedAt = Instant.now();

  • 获取当前时间,并将其设置为令牌的签发时间(issuedAt)。

Instant expiresAt = issuedAt.plus(registeredClient.getTokenSettings().getAccessTokenTimeToLive());

  • 从注册客户端的令牌设置中获取访问令牌的存活时间(AccessTokenTimeToLive)。
  • 将存活时间加到签发时间上,计算出令牌的过期时间(expiresAt)。

使用场景

  1. OAuth2 认证和授权流程
    • 在 OAuth2 认证和授权过程中,当客户端请求访问令牌时,授权服务器会生成一个访问令牌。此时需要确定令牌的签发时间和过期时间,以便设置令牌的有效期。
  2. 令牌管理
    • 在生成和管理 OAuth2 访问令牌时,需要准确记录令牌的签发和过期时间,以便在后续的访问控制和授权检查中使用。这有助于确保令牌在其有效期内使用,避免过期令牌的滥用。
  3. 安全性要求
    • 设定访问令牌的有效期是安全性的重要一环。通过明确的签发时间和过期时间,可以限制令牌的使用期限,降低令牌被滥用的风险。在过期后,客户端需要重新请求新的令牌,从而提高整体系统的安全性。
  4. 自定义令牌生成逻辑
    • 在一些高级应用场景中,可能需要自定义令牌的生成逻辑。例如,在生成 JWT(JSON Web Token)时,需要包含 iat(issued at)和 exp(expiration)字段,以便验证令牌的有效性。

实际应用示例

示例1:OAuth2 认证服务器

在一个 OAuth2 认证服务器中,当用户成功通过身份验证并请求访问令牌时,代码可能如下:

public OAuth2AccessToken generateAccessToken(OAuth2Authentication authentication) {Instant issuedAt = Instant.now();Instant expiresAt = issuedAt.plus(tokenSettings.getAccessTokenTimeToLive());OAuth2AccessToken accessToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,UUID.randomUUID().toString(),issuedAt,expiresAt,authentication.getScope());return accessToken;
}

示例2:自定义令牌生成器

在自定义的令牌生成器中,可以通过注入 RegisteredClient 的设置来定制令牌的有效期:

public class CustomTokenGenerator implements OAuth2TokenGenerator<OAuth2AccessToken> {@Overridepublic OAuth2AccessToken generate(OAuth2TokenContext context) {RegisteredClient registeredClient = context.getRegisteredClient();Instant issuedAt = Instant.now();Instant expiresAt = issuedAt.plus(registeredClient.getTokenSettings().getAccessTokenTimeToLive());return new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER,UUID.randomUUID().toString(),issuedAt,expiresAt,context.getAuthorizedScopes());}
}

总结

这段代码主要用于在生成 OAuth2 访问令牌时设置令牌的签发时间和过期时间,以确保令牌在特定的时间段内有效。它广泛应用于 OAuth2 认证和授权流程中,通过准确设置令牌的有效期,提升系统的安全性和可靠性。

相关文章:

  • 前端面试项目细节重难点(已工作|做分享)(九)
  • Eureka到Nacos迁移实战:解决配置冲突与启动异常
  • Superset二次开发之查询GitHub不同版本修改的文件列表 (Python 方案)
  • srchref,fetchajax,cookiesession
  • 机器学习之数学基础 时间复杂度和空间复杂度
  • [论文笔记]Query Rewriting for Retrieval-Augmented Large Language Models
  • hadoop和hbase对应版本关系
  • SpringBoot之请求映射原理
  • GIS之arcgis系列09:arcpy实现克里金差值
  • 【计算机毕业设计】258基于微信小程序的课堂点名系统
  • 开源项目-Docker部署学之思管理系统
  • [Android] Binder 里的 Service 和 Interface 分别是什么
  • 二维码扫描,没有生成,生成比较复杂
  • Web前端图形显示:深入探索与实用指南
  • 深入探索MySQL:性能调优与架构设计
  • 【面试系列】之二:关于js原型
  • Computed property XXX was assigned to but it has no setter
  • co模块的前端实现
  • CSS 提示工具(Tooltip)
  • Django 博客开发教程 16 - 统计文章阅读量
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Laravel 菜鸟晋级之路
  • LeetCode29.两数相除 JavaScript
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • python学习笔记 - ThreadLocal
  • Python学习笔记 字符串拼接
  • ubuntu 下nginx安装 并支持https协议
  • Vue UI框架库开发介绍
  • 创建一种深思熟虑的文化
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 翻译--Thinking in React
  • 诡异!React stopPropagation失灵
  • 简析gRPC client 连接管理
  • 一个SAP顾问在美国的这些年
  • 移动端解决方案学习记录
  • Android开发者必备:推荐一款助力开发的开源APP
  • ​第20课 在Android Native开发中加入新的C++类
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #android不同版本废弃api,新api。
  • (BFS)hdoj2377-Bus Pass
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (Note)C++中的继承方式
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)德国人的记事本
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .bat批处理(六):替换字符串中匹配的子串
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .net Signalr 使用笔记
  • .NET项目中存在多个web.config文件时的加载顺序
  • .net中的Queue和Stack
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • [04] Android逐帧动画(一)