GitLab OAuth访问令牌的有效性

4

有人知道 GitLab 的 OAuth 访问令牌的过期时间吗?

从经验来看,至少为12小时,但我想确定一下,以免不必要地刷新令牌。

PS:GitLab...如果在获取/刷新令牌时返回过期时间,那将非常方便(PS:文档中指出返回“expires_in”,但实际上没有返回)。


这里是 GitLab 问题 https://gitlab.com/gitlab-org/gitlab/-/issues/21745 跟踪此错误。 - steinybot
@steinybot 4年前我问过,现在已经2年了,但仍然没有进展...我想说这件事不会发生。 - Drejc
它表示接受合并请求,所以如果没有人贡献补丁,那么肯定不会发生。 - steinybot
@ColonelPanic 只用了4年时间来实现... ;) - Drejc
3个回答

5

来自https://forum.gitlab.com/t/missing-expires-in-in-the-token-response/1232/2

Gitlab使用Doorkeeper进行oauth。

Doorkeeper wiki上有一篇文章“Customizing Token Expiration” > https://github.com/doorkeeper-gem/doorkeeper/wiki/Customizing-Token-Expiration2

这篇wiki告诉我们有一个“access_token_expires_in”的配置项。我在Gitlab源代码中搜索,发现它被设置为nil。

这意味着“access_token”永远不会过期。

此外,这是来自https://gitlab.com/gitlab-org/gitlab-foss/-/blob/50d66f5ece57dcfbe074d97703691a8d3c38f4ac/config/initializers/doorkeeper.rb#L42:

 # Access token expiration time (default 2 hours).
 # If you want to disable expiration, set this to nil.
 access_token_expires_in nil

是的,它永远不会过期...所以刷新是无用的。它们有时会返回一个刷新令牌...您可以使用刷新令牌刷新令牌。但是,如果由于任何原因您无法读取新令牌(在刷新后)-您将被锁定,因为在刷新调用上生成了新的刷新令牌。这是有点破碎的设计,所以不要刷新。 - Drejc
你好,我今天看到他们没有OAuth2访问令牌过期。这是安全问题吗? - Benito103e
@Benito103e 当然是这样的...长时间使用同一个令牌从来都不是一个好主意。 - Drejc

1
在GitLab上,OAuth"访问令牌在两个小时后过期"

访问令牌在两个小时后过期,这意味着使用它们的集成必须支持至少每两个小时生成新的访问令牌。

在旧版本中,OAuth应用程序可以选择退出访问令牌到期。

退出访问令牌过期的功能已在GitLab 14.3中弃用,并在15.0中删除。所有现有集成必须更新以支持访问令牌刷新。


0

2016年:默认应该是8小时

{{link1:lib/gitlab/o_auth/session.rb}}提到:

Rails.cache.write("gitlab:#{provider}:#{ticket}", 
                   ticket, expires_in: Gitlab.config.omniauth.cas3.session_duration)

gitlab.yml 中,您有:
# SSO maximum session duration in seconds. Defaults to CAS default of 8 hours.
# cas3:
#   session_duration: 28800

2022年:过期的访问令牌文档提到:

  • 自GitLab 15.0(2022年6月)起,不再支持退出过期的访问令牌。
  • 访问令牌在两个小时后过期,这意味着使用它们的集成必须支持每两个小时生成新的访问令牌。

这并不是...我昨天大约在16:00左右进行了一些测试调用...今天又使用相同的令牌在10:00进行了测试,总共超过18小时。我查阅了不同的GitLab API集成实现,并且每个人都有一些不同的值(如果有的话)。 - Drejc
@Drejc,你的 gitlab.yml 中对于 session_duration 的设置是怎样的? - VonC
我正在使用公共API(gitlab.com/api/v3)。 - Drejc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接