马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
介绍
本文档将介绍如何通过修改源码的方式在 GitLab 15.x 生成不过期的 OAuth Access Tokens。
注意事项
- 本文档仅适用于 15.0 或更高版本的 Omnibus 实例,并仅在 GitLab 15.3.x 进行了验证。尽管我们已经做了一定的验证,仍建议您在测试环境进行一定测试后再在生产环境应用本方案。
- 每次对 GitLab 进行更新,您都需要在确认本方案依旧有效的前提下,重复执行这里的所有步骤,直到您不需要生成不过期的 OAuth Access Tokens。
- 执行本文步骤后您将无法生成 2 小时过期的 OAuth Access Tokens,直到您回退本文介绍的所有步骤或对 GitLab 进行了更新。
- 本文不会对您已有的 OAuth Access Tokens 进行修改(即不会修改已有 token 的过期时间),所有修改仅对新创建的 token 有效。
1. 确认是否有未完成的后台迁移任务
请参考文档 Upgrading GitLab。
2. 修改 doorkeeper 配置
注意:修改文件前请对需要编辑的文件进行备份。对于集群部署,您需要在所有 rails 节点重复此步骤。
编辑 /opt/gitlab/embedded/service/gitlab-rails/config/initializers/doorkeeper.rb 。
找到以下的注释内容:
# Authorization Code expiration time (default 10 minutes).
# authorization_code_expires_in 10.minutes
在该注释内容的下一行添加以下内容(您无需对上面的注释进行修改,提供上述注释仅为了方便您找到正确的位置插入下面的代码):
access_token_expires_in nil
custom_access_token_expires_in do |context|
Float::INFINITY
end
保存文件。
3. 重启 GitLab
注意:重启 GitLab 期间 GitLab 将有 3-5 分钟的停机时间。
请参考文档 How to restart GitLab。
4. 验证 (可选)
您可以生成一个 token 以确认改动已经生效:
curl -X POST -H "Content-Type: application/json" --data '{"grant_type":"password","username":"<username>","password":"<password>"}' https://gitlab.example.com/oauth/token
查看 token 的过期时间:
curl -H "Authorization: Bearer <token>" https://gitlab.example.com/oauth/token/info
如果 expires_in 和 expires_in_seconds 均返回 null 则配置已经生效。
如何回退
如果您遇到任何问题希望回退本文涉及的改动,编辑 /opt/gitlab/embedded/service/gitlab-rails/config/initializers/doorkeeper.rb ,删除第 2 步中添加的内容,然后重启 GitLab。
请注意所有改动仅对新生成的 OAuth Access Tokens 有效,不会对您已有的 OAuth Access Tokens 进行修改(无论是不是永久有效的 token)。
参考文档
|