如何设置访问令牌在几秒钟内过期

Posted

技术标签:

【中文标题】如何设置访问令牌在几秒钟内过期【英文标题】:How to set access token to expire in seconds 【发布时间】:2021-04-26 03:50:51 【问题描述】:

我在配置 Redhat Single SigOn (RHSSO) 或 Keycloak 令牌在几秒钟内到期时遇到问题,大约 30 秒。

我在几分钟内就找到了配置。有办法调整到秒吗?

【问题讨论】:

【参考方案1】:

从Keycloak Admin Console 是不可能的; Keycloak 允许在MinutesHoursDays 中指定访问令牌的过期时间,但不能以秒为单位:

虽然,当请求令牌时,过期时间以秒为单位显示,即:

"access_token":"...","expires_in":60,"...

您可以通过管理控制台设置的最短时间为1 分钟。老实说,我看不出有 30 秒而不是 1 分钟有什么好处。

在管理控制台中,如果尝试指定 0.1(或 0,1)分钟,则会显示错误

话虽如此,似乎您可以使用Rest Full API 绕过该限制。首先,代表管理员请求一个令牌,提取其访问令牌(我们称之为$ACCESS_TOKEN)。然后调用以下端点:

PUT <KEYCLOAK_HOST>/auth/admin/realms/<REALM_NAME>

以下数据

'"accessTokenLifespan":30'

现在,如果您在 Realm REALM_NAME 上为客户端请求令牌,您将获得以下信息:

"access_token":"...","expires_in":30,"...

30 秒作为访问令牌的到期时间。

现在,我还没有对此进行测试,所以由您来确定一切是否仍然正常工作。

【讨论】:

以上是关于如何设置访问令牌在几秒钟内过期的主要内容,如果未能解决你的问题,请参考以下文章

访问令牌和刷新令牌流程

过期后使用刷新令牌获取访问令牌(JWT)

DocuSign:在 JWT 令牌中设置过期 - 始终获取一小时过期的访问令牌

Facebook访问令牌过期问题[关闭]

如何知道访问令牌已过期?

如何从刷新令牌中获取访问令牌?刷新令牌会过期吗?