GitLab (Self-Managed) — вход через Zentro
Вход в GitLab через Zentro (OmniAuth OpenID Connect). Для Omnibus-установки — /etc/gitlab/gitlab.rb.
1. Приложение в Zentro
Заголовок раздела «1. Приложение в Zentro»redirect_uris: https://gitlab.example.com/users/auth/openid_connect/callback, scopes openid email profile,
permission_namespace: "GITLAB" (если администраторов GitLab назначать правами Zentro). См. README.
2. gitlab.rb
Заголовок раздела «2. gitlab.rb»gitlab_rails['omniauth_enabled'] = truegitlab_rails['omniauth_allow_single_sign_on'] = ['openid_connect'] # создавать пользователя при первом входеgitlab_rails['omniauth_block_auto_created_users'] = falsegitlab_rails['omniauth_auto_link_user'] = ['openid_connect'] # привязать к существующему по emailgitlab_rails['omniauth_providers'] = [ { name: "openid_connect", label: "Zentro", args: { name: "openid_connect", scope: ["openid", "profile", "email"], response_type: "code", issuer: "https://id.example.com", discovery: true, client_auth_method: "basic", uid_field: "sub", pkce: true, client_options: { identifier: "<client_id>", secret: "<client_secret>", redirect_uri: "https://gitlab.example.com/users/auth/openid_connect/callback" } } }]gitlab-ctl reconfigure. На странице входа появится кнопка «Zentro».
3. MFA: не спрашивать 2FA GitLab после MFA в Zentro
Заголовок раздела «3. MFA: не спрашивать 2FA GitLab после MFA в Zentro»Пользователь уже прошёл второй фактор в Zentro (в токене amr содержит mfa, acr = AAL2/AAL3) — повторная
2FA GitLab не нужна:
gitlab_rails['omniauth_allow_bypass_two_factor'] = ['openid_connect']Обязательность MFA задаётся политикой Zentro (Настройки → MFA), а не в GitLab.
4. Администраторы и доступ по правам Zentro (GitLab Premium / Ultimate)
Заголовок раздела «4. Администраторы и доступ по правам Zentro (GitLab Premium / Ultimate)»GitLab умеет назначать администраторов и ограничивать вход по группам из claim. В Zentro группами служат права
приложения (permissions): заведите роли с правами GITLAB:*:ADMIN (администраторы) и GITLAB:*:USER.
# внутри args провайдера: groups_attribute: "permissions", admin_groups: ["GITLAB:*:ADMIN"], required_groups: ["GITLAB:*:USER", "GITLAB:*:ADMIN"],На GitLab Free эти параметры не действуют — права администраторов назначаются в самом GitLab.
Проверка и частые ошибки
Заголовок раздела «Проверка и частые ошибки»- Zentro → карточка приложения → «Проверить»: redirect URI GitLab доступен.
Invalid redirect_uri— адрес в Zentro не совпадает побайтно сredirect_uriв gitlab.rb (http/https, слеш).- Пользователь создаётся без почты — в приложении Zentro нет scope
emailили у пользователя нет почты.