Help us learn about your current experience with the documentation. Take the survey.

Integrate your server with GitLab.com

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab Self-Managed

从 GitLab.com 导入项目并使用您的 GitLab.com 账户登录到您的 GitLab 实例。

要启用 GitLab.com OmniAuth 提供程序,您必须在 GitLab.com 上注册您的应用程序。 GitLab.com 会为您生成一个应用程序 ID 和密钥。

  1. 登录 GitLab.com。

  2. 在左侧边栏中,选择您的头像。

  3. 选择 编辑个人资料

  4. 在左侧边栏中,选择 应用程序

  5. 添加新应用程序 提供所需详细信息。

    • 名称:可以是任何内容。考虑使用类似 <组织名称> 的 GitLab<您的姓名> 的 GitLab 或其他描述性名称。

    • 重定向 URI:

      # 您也可以使用非 SSL URL,但建议使用 SSL URL。
      https://your-gitlab.example.com/import/gitlab/callback
      https://your-gitlab.example.com/users/auth/gitlab/callback

    第一个链接用于导入器,第二个用于身份验证。

    如果您:

    • 计划使用导入器,可以保持范围不变。
    • 只想将此应用程序用于身份验证,我们建议使用更小的范围集。read_user 就足够了。
  6. 选择 保存应用程序

  7. 您现在应该会看到 应用程序 ID密钥。继续配置时请保持此页面打开。

  8. 在您的 GitLab 服务器上,打开配置文件。

    对于 Linux 包安装:

    sudo editor /etc/gitlab/gitlab.rb

    对于自编译安装:

    cd /home/git/gitlab
    
    sudo -u git -H editor config/gitlab.yml
  9. 配置 通用设置 以将 gitlab 添加为单点登录提供程序。这为没有现有 GitLab 账户的用户启用即时账户配置。

  10. 添加提供程序配置:

    针对 GitLab.com 进行身份验证的 Linux 包安装:

    gitlab_rails['omniauth_providers'] = [
      {
        name: "gitlab",
        # label: "提供程序名称", # 登录按钮的可选标签,默认为 "GitLab.com"
        app_id: "YOUR_APP_ID",
        app_secret: "YOUR_APP_SECRET",
        args: { scope: "read_user" } # 可选:默认为应用程序的范围
      }
    ]

    或者,针对不同 GitLab 实例进行身份验证的 Linux 包安装:

    gitlab_rails['omniauth_providers'] = [
      {
        name: "gitlab",
        label: "提供程序名称", # 登录按钮的可选标签,默认为 "GitLab.com"
        app_id: "YOUR_APP_ID",
        app_secret: "YOUR_APP_SECRET",
        args: { scope: "read_user", # 可选:默认为应用程序的范围
                client_options: { site: "https://gitlab.example.com" } }
      }
    ]

    针对 GitLab.com 进行身份验证的自编译安装:

    - { name: 'gitlab',
        # label: '提供程序名称', # 登录按钮的可选标签,默认为 "GitLab.com"
        app_id: 'YOUR_APP_ID',
        app_secret: 'YOUR_APP_SECRET',

    或者,针对不同 GitLab 实例进行身份验证的自编译安装:

    - { name: 'gitlab',
        label: '提供程序名称', # 登录按钮的可选标签,默认为 "GitLab.com"
        app_id: 'YOUR_APP_ID',
        app_secret: 'YOUR_APP_SECRET',
        args: { "client_options": { "site": 'https://gitlab.example.com' } }

    在 GitLab 15.1 及更早版本中,site 参数需要 /api/v4 后缀。 我们建议您在升级到 GitLab 15.2 或更高版本后删除此后缀。

  11. 'YOUR_APP_ID' 更改为 GitLab.com 应用程序页面的应用程序 ID。

  12. 'YOUR_APP_SECRET' 更改为 GitLab.com 应用程序页面的密钥。

  13. 保存配置文件。

  14. 使用适当的方法实施这些更改:

在登录页面上,现在应该有一个 GitLab.com 图标位于常规登录表单之后。选择该图标开始身份验证过程。 GitLab.com 会要求用户登录并授权 GitLab 应用程序。如果一切顺利,用户将被返回到您的 GitLab 实例并登录。

减少登录时的访问权限

如果您使用 GitLab 实例进行身份验证,当 OAuth 应用程序用于登录时,您可以减少访问权限。

任何 OAuth 应用程序都可以使用授权参数 gl_auth_type=login 来宣传应用程序的目的。如果应用程序配置为 apiread_api,则访问令牌会使用 read_user 发布用于登录,因为不需要更高权限。

GitLab OAuth 客户端配置为传递此参数,但其他应用程序也可以传递它。