跳到主内容

GitLab

本指南把自托管的 GitLab 实例配置为以 Casdoor 作为 OIDC 提供商。

注意事项

GitLab 文档 说明 GitLab 只支持使用 HTTPS 的 OpenID 提供商,所以要用 HTTPS 部署 Casdoor(例如放在配置了 SSL 的 NGINX 反向代理后面)。 Casdoor本身默认只通过HTTP在8000端口监听,没有HTTPS相关功能。

以下是在配置中提到的一些名称:

CASDOOR_HOSTNAME:部署Casdoor服务器的域名或IP,例如,https://door.casbin.com。

GITLAB_HOSTNAME:部署GitLab的域名或IP,例如,https://gitlab.com。

步骤1:部署Casdoor和GitLab​

部署 Casdoor 和 GitLab. 部署后,确认:

  1. Casdoor可以正常登录和使用。
  2. 将 Casdoor 的 origin 值 (conf/app.conf) 设置为 CASDOOR_HOSTNAME。 Casdoor 配置

步骤2:配置Casdoor应用程序​

  1. 创建或使用现有的 Casdoor 应用程序。
  2. 添加一个重定向URL:http://GITLAB_HOSTNAME/users/auth/openid_connect/callback。
  3. 添加您想要的提供者并补充其他设置。

应用程序设置 在应用设置页记下 Client ID 和 Client secret(见上图),下一步要用。

OIDC 发现地址:http://<CASDOOR_HOSTNAME>/.well-known/openid-configuration。

步骤3:配置GitLab​

按下面的步骤操作,或参考 GitLab OIDC 文档(例如源码安装的情况)调整。

  1. 在 GitLab 服务器上,打开配置文件。

    sudo editor /etc/gitlab/gitlab.rb
  2. 添加提供商配置。 (HOSTNAME URL应包含http或https)

    gitlab_rails['omniauth_providers'] = [
    {
    name: "openid_connect",
    label: "Casdoor", # 可选的登录按钮标签,默认为 "Openid Connect"
    args: {
    name: "openid_connect",
    scope: ["openid", "profile", "email"],
    response_type: "code",
    issuer: "<CASDOOR_HOSTNAME>",
    client_auth_method: "query",
    discovery: true,
    uid_field: "preferred_username",
    client_options: {
    identifier: "<YOUR CLIENT ID>",
    secret: "<YOUR CLIENT SECRET>",
    redirect_uri: "<GITLAB_HOSTNAME>/users/auth/openid_connect/callback"
    }
    }
    }
    ]
  3. 重新启动 GitLab 服务器。

  4. 每个已注册用户都可以打开**GITLAB_HOSTNAME/-/profile/account**并连接Casdoor账户。 GitLab 连接

  5. 完成!现在可以通过 Casdoor 登录你的 GitLab 实例了。 GitLab 登录