极狐GitLab 正式推出面向 GitLab 老旧版本(12.x、13.x、14.x、15.x 等)免费用户的专业升级服务,点击查看详情

返回列表 发布新帖

永久 OAuth Access Tokens

870 0
发表于 2024-4-10 23:38:27 | 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×

介绍

本文档将介绍如何通过修改源码的方式在 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_inexpires_in_seconds 均返回 null 则配置已经生效。


如何回退

如果您遇到任何问题希望回退本文涉及的改动,编辑 /opt/gitlab/embedded/service/gitlab-rails/config/initializers/doorkeeper.rb,删除第 2 步中添加的内容,然后重启 GitLab。

请注意所有改动仅对新生成的 OAuth Access Tokens 有效,不会对您已有的 OAuth Access Tokens 进行修改(无论是不是永久有效的 token)。

参考文档

回复

使用道具 举报

意见建议

Email:forum@gitlab.cn
  • 关注公众号
  • 添加专业顾问
Copyright © 2001-2024 极狐GitLab论坛 版权所有 All Rights Reserved. 鄂ICP备2021008419号-1|鄂公网安备42018502006137号
关灯 快速发帖
扫一扫添加专业顾问
返回顶部
快速回复 返回顶部 返回列表