马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  
 
×
 
介绍
本文档将介绍如何通过修改源码的方式在 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)。 
参考文档
 |