正如@Kuba Šimonovský在评论中指出的,被接受的答案缺少其他重要因素:
实际上,情况要复杂得多。
TL;DR 可以推断出刷新令牌生命周期
将等于 (SSO会话空闲时间
、客户端会话空闲时间
、SSO会话最大时间
和客户端会话最大时间
) 中最小的值。
在花费一些时间研究后,现在回顾这个线程,我觉得之前的回答没有详细解释发生了什么(甚至有人可能会认为它们实际上是错误的)。
现在我们暂时只考虑SSO会话空闲时间
和SSO会话最大时间
:
SSO会话最大时间
>SSO会话空闲时间
,此时刷新令牌生命周期
与SSO会话空闲时间
相同。为什么?因为如果应用程序空闲了SSO会话空闲时间
,则用户会注销并且刷新令牌绑定到该值。每当应用程序请求新令牌时,刷新令牌生命周期
和SSO会话空闲时间
的倒计时值都将被重置;SSO Session Max
<= SSO Session Idle
,那么 refresh token lifetime
将与 SSO Session Max
相同。为什么呢?因为无论用户做什么(即使是空闲或者不是空闲),用户在 SSO Session Max
时间后会被注销,所以刷新令牌绑定到该值。
从这里我们可以得出结论,刷新令牌的生命周期取决于 SSO Session Idle
和 SSO Session Max
中的较小值。
这两个值与单点登录(SSO)相关。我们仍需要考虑域设置的 Client Session Idle
和 Client Session Max
字段的值,在未设置的情况下它们分别与 SSO Session Idle
和 SSO Session Max
的值相同。
如果这些值已设置,在刷新令牌的上下文中,它们将覆盖来自 SSO Session Idle
和 SSO Session Max
的值,但只有当它们低于 SSO Session Idle
和 SSO Session Max
的值时才会覆盖。
让我们看下面的例子:SSO Session Idle
= 1800 秒,SSO Session Max
= 10 小时和:
Client Session Idle
= 600 秒和 Client Session Max
= 1 小时。在这种情况下,refresh token lifetime
与 Client Session Idle 相同;Client Session Idle
= 600秒,Client Session Max
= 60秒。在这种情况下,refresh token lifespan
与Client Session Max相同。Client Session Idle
= 1天,Client Session Max
= 10天。在这种情况下,refresh token lifespan
与SSO Session Idle相同;refresh token lifespan
将等于 (SSO Session Idle
,Client Session Idle
,SSO Session Max
和Client Session Max
)中最小的值。Client Session Max
来控制刷新令牌生存期是错误的。只需要看一下之前的示例1)和3)即可。Client Session Idle
和Client Session Max
字段可以被客户端自身的Client Session Idle
和Client Session Max
所覆盖,这将影响该客户端的refresh token lifespan
。Client Session Idle
和Client Session Max
值,而不是来自领域设置的值。刷新令牌的生命周期由SSO会话空闲设置控制。 30分钟=30*60=1800秒(refresh_expires_in值)。
客户端会话空闲时间
设置为0,客户端会话最大时间
设置为0,SSO会话空闲时间
设置为12小时,但是空闲会话仅在30分钟后过期。还需要什么? - Shashank Shekher客户端会话最大值
刷新令牌过期和失效之前的最长时间。它允许指定一个比会话超时更短的刷新令牌超时时间。并且它可以被个别客户端覆盖。这是一种可选配置,如果未设置为大于0的值,则使用SSO会话最大配置中设置的相同空闲超时时间。