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. 部署后,确认:
- Casdoor可以正常登录和使用。
- 将 Casdoor 的
origin值 (conf/app.conf) 设置为CASDOOR_HOSTNAME。
步骤2:配置Casdoor应用程序
- 创建或使用现有的 Casdoor 应用程序。
- 添加一个重定向URL:
http://GITLAB_HOSTNAME/users/auth/openid_connect/callback。 - 添加您想要的提供者并补充其他设置。
在应用设置页记下 Client ID 和 Client secret(见上图),下一步要用。
OIDC 发现地址:http://<CASDOOR_HOSTNAME>/.well-known/openid-configuration。
步骤3:配置GitLab
按下面的步骤操作,或参考 GitLab OIDC 文档(例如源码安装的情况)调整。
-
在 GitLab 服务器上,打开配置文件。
sudo editor /etc/gitlab/gitlab.rb -
添加提供商配置。 (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"
}
}
}
] -
重新启动 GitLab 服务器。
-
每个已注册用户都可以打开**
GITLAB_HOSTNAME/-/profile/account**并连接Casdoor账户。
-
完成!现在可以通过 Casdoor 登录你的 GitLab 实例了。
