如何在 Keycloak 中指定刷新令牌的生命周期

2023-12-20

Keycloak 刷新令牌的生命周期为 1800 秒:

“refresh_expires_in”:1800

如何指定不同的过期时间?在 Keycloak 管理 UI 中,只能指定访问令牌的生命周期:


正如评论中指出的@库巴西蒙诺夫斯基 https://stackoverflow.com/users/3994868/kuba-%C5%A0imonovsk%C3%BD the 接受的答案 https://stackoverflow.com/a/54679852/1366871缺少其他重要因素:

事实上,情况要复杂得多。

TL;DR人们可以推断出refresh token lifespan将等于 (SSO Session Idle, Client Session Idle, SSO Session Max, and Client Session Max).


在花了一些时间研究这个问题之后,现在回头看这个线程,我觉得之前的答案感觉简短,无法详细解释发生了什么(有人甚至可能会争辩说他们实际上是错误的)。

现在让我们假设我们只有SSO Session Idle and SSO Session Max:

  • and SSO Session Max > SSO Session Idle在这种情况下refresh token lifetime是相同的SSO Session Idle。为什么?因为如果应用程序空闲了SSO Session Idle用户注销的时间,这就是刷新令牌绑定到该值的原因。每当应用程序请求新令牌时,refresh token lifetime and SSO Session Idle倒计时值将再次重置;
  • and SSO Session Max <= SSO Session Idle那么refresh token lifetime将与以下相同SSO Session Max。为什么?因为无论用户做什么(i.e.,是否空闲)用户在之后注销SSO Session Max时间,以及为什么刷新令牌绑定到该值。

从这里我们得出结论,刷新令牌的寿命必然是两个值中的最小值SSO Session Idle and SSO Session Max.

这两个值都与单点登录 (SSO) 相关。我们仍然需要考虑Client Session Idle and Client Session Max领域设置的字段,未设置时与SSO Session Idle and SSO Session Max, 分别。

如果设置了这些值,则在刷新令牌的上下文中,它们将覆盖来自SSO Session Idle and SSO Session Max,但仅当它们低于来自的值SSO Session Idle and SSO Session Max.

让我们看看下面的例子:SSO Session Idle= 1800 秒,SSO Session Max= 10 小时并且:

  1. Client Session Idle= 600 秒并且Client Session Max= 1 小时。在这种情况下,refresh token lifespan是相同的客户端会话空闲;
  2. Client Session Idle= 600 秒并且Client Session Max= 60 秒。在这种情况下,refresh token lifespan是相同的最大客户端会话数.
  3. Client Session Idle= 1 天并且Client Session Max= 10 天。在这种情况下,refresh token lifespan是相同的SSO 会话空闲;

简而言之,你可以推断出refresh token lifespan将等于 (SSO Session Idle, Client Session Idle, SSO Session Max, and Client Session Max).

因此,之前的答案声称您可以简单地使用Client Session Max控制刷新令牌的生命周期是FALSE。只需看一下前面的示例 1) 和 3)。

最后,田野Client Session Idle and Client Session Max领域设置中的内容可以被覆盖Client Session Idle and Client Session Max客户本身,这会影响refresh token lifespan特别是对于该客户。

应用相同的逻辑,但不考虑值Client Session Idle and Client Session Max从领域设置来看,我们需要考虑客户端高级设置。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Keycloak 中指定刷新令牌的生命周期 的相关文章

随机推荐

  • 如何将Sentry与.NET 6.0 Worker Service集成?

    我综合了Sentry与 NET Core 6 0工人服务这边走 NuGet 哨兵3 17 1 Program cs using Sentry var sentryDsn Environment GetEnvironmentVariable
  • 处理宏注释时无法访问父级成员

    我有点被以下内容挡住了 宏注释 情况 假设我有一个名为 factory哪个 旨在产生一个apply相应伴随对象中带注释的特征的方法 例如 给定trait A factory trait A val a1 Int 预期生成的代码如下 obje
  • 扩展模板解析器:CodeIgniter...嵌套数组的问题

    我目前正在使用扩展模板解析器库 http codeigniter com forums viewthread 155859 对于代码点火器 我在尝试模板解析嵌套数组时遇到了问题 这是我正在向视图提供的数组 Array users gt Ar
  • 如何从 C++ 向量中获取 2 个随机(不同)元素

    我想从 std vector 中获取 2 个随机不同的元素 我怎样才能做到这一点 它很快 在我的算法中已经完成了数千次 它是优雅的 元素选择确实是均匀分布的 为了优雅和简单 void Choose const int size int fi
  • 如何为复杂的文档结构编写 MongoTemplate 查询和条件?

    我是 MongoTemplate 的新手 我想定义一个 org springframework data mongodb core query Query 和 org springframework data mongodb core qu
  • Makefile 和符号链接

    我在 makefile 方面遇到了一个奇怪的问题 我只想在 makefile 中设置符号链接 但在一台机器上收到错误消息 Linux 2 6 18 238 12 1 el5 make execvp ln Too many levels of
  • 如何在 Cocoa Mac 中以编程方式关闭窗口?

    如何以编程方式关闭 cocoa mac 中的窗口 我使用按钮单击从第一个窗口 xib 打开了第二个窗口 xib 我需要在打开或单击按钮时以编程方式关闭第一个窗口 xib 我怎样才能做到这一点 Apple 有一些有用的示例代码笔尖装载 htt
  • iconv:从 CP1252 转换为 UTF-8

    我正在尝试将 CP1252 编码的字符串 转换为 UTF 8 我尝试过这个命令 iconv c f WINDOWS 1252 t UTF 8 test txt 运气不好 得到了一些奇怪的结果 我尝试在这里输入相同的字符串 他们能够毫无问题地
  • 无法访问sql server配置管理器

    我在删除 SQL Server 2008 R2 Express 后安装了 SQL Server 2008 R2 评估版 卸载后 SQL Server 配置管理器仍然可以访问 但现在无法再访问 并出现以下错误 无法连接到 WMI 提供程序 您
  • 如何设置 VTCompressionSession 的 MaxH264SliceBytes 属性

    iOS VTCompressionSession有一个属性是kVTCompressionPropertyKey MaxH264SliceBytes 但是 我无法设置kVTCompressionPropertyKey MaxH264Slice
  • 如何扩展或覆盖 AngularJS 中现有的过滤器?

    是否可以扩展现有的 标准 过滤器 date number lowercaseETC 就我而言 我需要从 YYYYMMDDhhmmss 格式解析日期 所以我想扩展 或覆盖 date过滤而不是我自己写 我更喜欢实施装饰器模式 http en w
  • Java POS 打印机错误

    我是Java新手 我正在使用java开发POS应用程序 我为这个项目购买了一台 Epson POS 打印机 打印机型号是EPSON TM U220 我已经安装了JavaPos并且 我的代码片段如下 但运行时我收到此错误 感谢是否有人可以帮助
  • 立即音频输入和输出 Android

    在我的 Android 应用程序中 我想从智能手机的麦克风中获取一些音频并立即播放 就像麦克风一样 没有延迟 我目前正在考虑使用AudioRecord and AudioTrack课程 根据我读过的内容 但我不太确定如何继续 我查看了 St
  • devops REST API:无法使用 PATCH 方法更新工作项状态

    我正在使用 DevOps Rest api 来获取一些信息 POST 方法对我来说效果很好 我想更新我的工作项目的状态 为此 我需要使用 PATCH 方法 这不起作用 并且没有给出任何类型的错误 https learn microsoft
  • 在已 root 的 Android 设备上读取或写入 /data 中的文件 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试以编程方式读取 写入已 root 的手机上 data 目录中的文件 我先来外壳执行 su确保我的程序获得超级用户访问权限 效
  • 更改活动选项卡视口大小,如开发工具响应视图

    在 Chrome 扩展中 我想更改视口大小 例如 DevTools 响应式视图 我正在调查https developer chrome com extensions tabs type ZoomSettingsMode https deve
  • 删除mysql表中的所有记录[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试从表中删除所有记录 我的查
  • Django:测试页面是否已重定向到所需的网址

    在我的 Django 应用程序中 我有一个身份验证系统 因此 如果我不登录并尝试访问某些个人资料的个人信息 我会被重定向到登录页面 现在 我需要为此编写一个测试用例 我得到的浏览器响应是 GET myprofile data some id
  • 如何在 MySQL 数据库中存储 UTC ISO8601 日期?

    我有数千个以下格式的日期 2011 10 02T23 25 42Z 又名 UTC 格式的 ISO 8601 我应该使用什么 MySQL 数据类型在 MySQL 数据库中存储这样的 ISO8601 日期 例如 Datetime timesta
  • 如何在 Keycloak 中指定刷新令牌的生命周期

    Keycloak 刷新令牌的生命周期为 1800 秒 refresh expires in 1800 如何指定不同的过期时间 在 Keycloak 管理 UI 中 只能指定访问令牌的生命周期 正如评论中指出的 库巴西蒙诺夫斯基 https