Назначение каждого параметра описано на странице «Обзор». Здесь для каждого типа установки указано место, в котором записывается параметр, и форма его значения.
Где хранится конфигурация
Пакет для ОС Linux. Параметры задаются ключами файла /etc/gitlab/gitlab.rb.
Omnibus Docker. Контейнер читает те же ключи gitlab.rb. Они попадают в него из переменной окружения GITLAB_OMNIBUS_CONFIG, которая вычисляется при каждом запуске, и из файла /etc/gitlab/gitlab.rb на томе конфигурации, который читается после переменной. Ключ, записанный в файле, переопределяет тот же ключ в переменной. Переменная задаётся при создании контейнера:
docker run -d --name code \
--shm-size 256m \
-p 80:80 -p 443:443 -p 22:22 \
-e GITLAB_OMNIBUS_CONFIG="external_url 'https://<HOSTNAME>'; gitlab_rails['omniauth_enabled'] = true; gitlab_rails['omniauth_allow_single_sign_on'] = ['openid_connect']; gitlab_rails['omniauth_auto_link_ldap_user'] = true" \
-v /srv/code/config:/etc/gitlab \
-v /srv/code/logs:/var/log/gitlab \
-v /srv/code/data:/var/opt/gitlab \
<REGISTRY>/<FLAVOR>:<VERSION>Переменная фиксируется при создании контейнера, поэтому её изменение означает удаление контейнера и создание нового с теми же томами. Записи провайдеров и LDAP-серверов занимают несколько строк, а том конфигурации сохраняет их при замене контейнера. С томами из быстрого старта файл /etc/gitlab/gitlab.rb внутри контейнера — это /srv/code/config/gitlab.rb на хосте, и редактируется он на хосте:
sudo vi /srv/code/config/gitlab.rbHelm-чарт. Параметры задаются значениями чарта в файле values.yaml релиза.
Модуль Deckhouse Kubernetes Platform. Параметры задаются в ресурсе CodeInstance, описанном на страницах «Настройка OmniAuth и LDAP» и Custom Resources в документации модуля.
Общие параметры OmniAuth
Параметры и их действие описаны в разделе «Общие параметры OmniAuth».
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
У каждого общего параметра OmniAuth собственный ключ в gitlab.rb:
| Параметр | Ключ в gitlab.rb |
|---|---|
enabled | gitlab_rails['omniauth_enabled'] |
providers | gitlab_rails['omniauth_providers'] |
allow_single_sign_on | gitlab_rails['omniauth_allow_single_sign_on'] |
block_auto_created_users | gitlab_rails['omniauth_block_auto_created_users'] |
auto_link_ldap_user | gitlab_rails['omniauth_auto_link_ldap_user'] |
auto_link_user | gitlab_rails['omniauth_auto_link_user'] |
auto_sign_in_with_provider | gitlab_rails['omniauth_auto_sign_in_with_provider'] |
external_providers | gitlab_rails['omniauth_external_providers'] |
allow_bypass_two_factor | gitlab_rails['omniauth_allow_bypass_two_factor'] |
sync_profile_from_provider | gitlab_rails['omniauth_sync_profile_from_provider'] |
sync_profile_attributes | gitlab_rails['omniauth_sync_profile_attributes'] |
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['openid_connect']
gitlab_rails['omniauth_block_auto_created_users'] = true
gitlab_rails['omniauth_auto_link_ldap_user'] = true
gitlab_rails['omniauth_sync_profile_attributes'] = ['email']GITLAB_OMNIBUS_CONFIG и отделяется от следующего символом ;, как в команде docker run выше; ключ, значение которого занимает несколько строк, записывается в файл /srv/code/config/gitlab.rb.Общие параметры — это значения в секции global.appConfig.omniauth:
global:
appConfig:
omniauth:
enabled: true
allowSingleSignOn: ['openid_connect']
blockAutoCreatedUsers: true
autoLinkLdapUser: true
syncProfileAttributes: ['email']Общие параметры задаются в секции spec.appConfig.omniauth, а провайдеры перечисляются в её параметре providers:
enabled: true
allowSingleSignOn: ['openid_connect']
blockAutoCreatedUsers: true
autoLinkLdapUser: true
syncProfileAttributes: ['email']Провайдер OpenID Connect
Параметры подключения провайдера и их действие описаны в разделе «OpenID Connect (OIDC)».
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
Провайдер — это запись массива gitlab_rails['omniauth_providers']. Ключи allowed_groups, admin_groups, auditor_groups и groups_attribute указываются рядом с name, на верхнем уровне записи; параметры подключения — внутри args:
gitlab_rails['omniauth_providers'] = [
{
name: 'openid_connect', # Не изменяйте это значение.
label: 'Keycloak', # Подпись кнопки входа.
allowed_groups: ['gitlab'],
admin_groups: ['admin'],
auditor_groups: ['audit'],
groups_attribute: 'gitlab_group',
args: {
name: 'openid_connect',
scope: ['openid', 'profile', 'email'],
response_type: 'code',
issuer: 'https://keycloak.example.com/realms/example',
discovery: true,
client_auth_method: 'query',
uid_field: 'preferred_username',
send_scope_to_token_endpoint: false,
pkce: true,
client_options: {
identifier: '<client_id>',
secret: '<client_secret>',
redirect_uri: 'https://code.example.com/users/auth/openid_connect/callback'
}
}
}
]/srv/code/config/gitlab.rb на томе конфигурации.Запись провайдера хранится в объекте Secret и подключается из значений, поэтому секрет клиента остаётся вне values.yaml. Создайте Secret с записью провайдера:
d8 k -n code create secret generic code-omniauth-keycloak \
--from-file=provider=keycloak.yamlФайл содержит ту же запись, что и при остальных типах установки:
name: 'openid_connect'
label: 'Keycloak'
allowed_groups:
- 'gitlab'
admin_groups:
- 'admin'
groups_attribute: 'gitlab_group'
args:
name: 'openid_connect'
scope:
- 'openid'
- 'profile'
- 'email'
response_type: 'code'
issuer: 'https://keycloak.example.com/realms/example'
discovery: true
client_auth_method: 'query'
uid_field: 'preferred_username'
send_scope_to_token_endpoint: false
pkce: true
client_options:
identifier: '<client_id>'
secret: '<client_secret>'
redirect_uri: 'https://code.example.com/users/auth/openid_connect/callback'Подключите Secret в значениях:
global:
appConfig:
omniauth:
providers:
- secret: code-omniauth-keycloak
key: providerПровайдер — это запись параметра providers в секции spec.appConfig.omniauth. Ключи allowedGroups, adminGroups и groupsAttribute указываются рядом с name; параметра для групп аудиторов в ресурсе CodeInstance нет. Параметры подключения указываются внутри args:
providers:
- name: 'openid_connect' # Не изменяйте это значение.
label: 'Keycloak' # Подпись кнопки входа.
allowedGroups:
- 'gitlab'
adminGroups:
- 'admin'
groupsAttribute: 'gitlab_group'
args:
name: 'openid_connect'
scope:
- 'openid'
- 'profile'
- 'email'
response_type: 'code'
issuer: 'https://keycloak.example.com/realms/example'
discovery: true
client_auth_method: 'query'
uid_field: 'preferred_username'
send_scope_to_token_endpoint: false
pkce: true
client_options:
identifier: '<client_id>'
secret: '<client_secret>'
redirect_uri: 'https://code.example.com/users/auth/openid_connect/callback'Провайдер SAML
Параметры провайдера SAML и их действие описаны в разделе «SAML».
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
Провайдер SAML записывается ещё одной записью массива gitlab_rails['omniauth_providers']:
gitlab_rails['omniauth_providers'] = [
{
name: 'saml',
allowed_groups: ['gitlab'],
admin_groups: ['admin'],
groups_attribute: 'gitlab_group'
}
]/srv/code/config/gitlab.rb на томе конфигурации.Запись SAML хранится в объекте Secret и подключается в global.appConfig.omniauth.providers так же, как запись OpenID Connect.
Провайдер — это запись параметра providers в секции spec.appConfig.omniauth:
providers:
- name: 'saml'
allowedGroups:
- 'gitlab'
adminGroups:
- 'admin'
groupsAttribute: 'gitlab_group'LDAP-серверы
Ключ записи сервера является его именем. Назначение параметров подключения описано в разделе «Синхронизация с LDAP»; секция group_sync, которая создаёт группы и назначает роли, описана в разделах «Группы и права доступа» и «Секция role_mapping». Секция group_sync учитывается только у сервера под ключом main (раздел «Область синхронизации»).
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
Вход через LDAP включается ключом gitlab_rails['ldap_enabled']. Серверы описываются в ключе gitlab_rails['ldap_servers'], значение которого — документ YAML.
Значение разбирается как YAML, поэтому отступы внутри блока значимы, а символы табуляции его ломают.
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
label: 'Головной офис'
host: ldap-main.example.com
port: 3389
uid: 'cn'
bind_dn: 'uid=viewer,ou=People,dc=example,dc=com'
password: 'viewer123'
base: 'ou=People,dc=example,dc=com'
# Не учитывать пользователей, заблокированных в каталоге (опционально).
user_filter: '(!(nsAccountLock=TRUE))'
# Пользователь найден в LDAP — вход разрешён сразу.
block_auto_created_users: false
sync_name: true
group_sync:
create_groups: true
base: 'ou=Groups,dc=example,dc=com'
filter: '(objectClass=groupOfNames)'
prefix:
attribute: 'businessCategory'
default: 'default-program'
top_level_group: 'LdapGroups'
name_mask: '(?<=-)[A-z0-9]*$'
owner: 'root'
role_mapping:
- by_name: '.*-project_manager-.*'
gitlab_role: 'maintainer'
- by_name: '.*-developer-.*'
gitlab_role: 'developer'
- by_name: '.*-participant-.*'
gitlab_role: 'reporter'
contractors:
label: 'Подрядчики'
host: ldap-contractors.example.com
port: 3389
uid: 'cn'
bind_dn: 'uid=viewer,ou=People,dc=contractors,dc=example,dc=com'
password: 'viewer123'
base: 'ou=People,dc=contractors,dc=example,dc=com'
EOSgitlab_rails['ldap_enabled'] и gitlab_rails['ldap_servers'] те же, что во вкладке «Пакет для ОС Linux». Значение ключа gitlab_rails['ldap_servers'] занимает несколько строк, поэтому записывайте его в файл /srv/code/config/gitlab.rb на томе конфигурации.Серверы описываются значениями в секции global.appConfig.ldap.servers теми же ключами, которые читает продукт. Пароль сервисной учётной записи берётся из объекта Secret:
d8 k -n code create secret generic code-ldap-password \
--from-literal=password='viewer123'global:
appConfig:
ldap:
servers:
main:
label: 'Головной офис'
host: ldap-main.example.com
port: 3389
uid: 'cn'
bind_dn: 'uid=viewer,ou=People,dc=example,dc=com'
password:
secret: code-ldap-password
key: password
base: 'ou=People,dc=example,dc=com'
user_filter: '(!(nsAccountLock=TRUE))'
block_auto_created_users: false
sync_name: true
group_sync:
create_groups: true
base: 'ou=Groups,dc=example,dc=com'
filter: '(objectClass=groupOfNames)'
top_level_group: 'LdapGroups'
owner: 'root'
role_mapping:
- by_name: '.*-developer-.*'
gitlab_role: 'developer'
contractors:
label: 'Подрядчики'
host: ldap-contractors.example.com
port: 3389
uid: 'cn'
bind_dn: 'uid=viewer,ou=People,dc=contractors,dc=example,dc=com'
password:
secret: code-ldap-password
key: password
base: 'ou=People,dc=contractors,dc=example,dc=com'Серверы — это ключи параметра servers в секции spec.appConfig.ldap:
servers:
main:
label: ldap
host: 127.0.0.1
port: 3389
bindDn: 'uid=viewer,ou=People,dc=example,dc=com'
base: 'ou=People,dc=example,dc=com'
uid: 'cn'
password: 'viewer123'
syncName: true
groupSync:
createGroups: true
base: 'ou=Groups,dc=example,dc=com'
filter: '(objectClass=groupOfNames)'
prefix:
attribute: 'businessCategory'
default: 'default-program'
topLevelGroup: 'LdapGroups'
nameMask: '(?<=-)[A-z0-9]*$'
owner: 'root'
roleMapping:
- byName: '.*-project_manager-.*'
gitlabRole: 'Maintainer'
- byName: '.*-developer-.*'
gitlabRole: 'Developer'
- byName: '.*-participant-.*'
gitlabRole: 'Reporter'Несколько LDAP-серверов
Несколько серверов описываются повторением записи сервера под другим ключом. У каждого сервера собственные параметры подключения; секция group_sync со всем её содержимым учитывается только у сервера под ключом main (раздел «Область синхронизации»). Идентификация пользователя и решение о доступе, когда один и тот же пользователь найден на нескольких серверах, описаны в разделе «Несколько LDAP-серверов».
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
gitlab_rails['ldap_servers'], как main и contractors в разделе «LDAP-серверы» выше./srv/code/config/gitlab.rb на томе конфигурации.Записи являются ключами секции global.appConfig.ldap.servers, как main и contractors в разделе «LDAP-серверы» выше.
Записи являются ключами параметра servers секции spec.appConfig.ldap:
servers:
main:
label: 'Головной офис'
host: ldap-main.example.com
base: 'ou=People,dc=example,dc=com'
uid: 'cn'
# Остальные параметры подключения.
groupSync:
base: 'ou=Groups,dc=example,dc=com'
roleMapping:
- byName: '.*-developer-.*'
gitlabRole: 'Developer'
contractors:
label: 'Подрядчики'
host: ldap-contractors.example.com
base: 'ou=People,dc=contractors,dc=example,dc=com'
uid: 'cn'
# Остальные параметры подключения.Связывание учётных записей OIDC с LDAP
Автоматическое связывание OIDC-учётной записи с учётной записью LDAP включается параметром auto_link_ldap_user. Как ищется учётная запись LDAP и что происходит при первом и последующих входах, описано в разделе «Связывание учётных записей OIDC с LDAP».
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
gitlab_rails['omniauth_auto_link_ldap_user'] = trueGITLAB_OMNIBUS_CONFIG, и в файл /srv/code/config/gitlab.rb.global:
appConfig:
omniauth:
autoLinkLdapUser: trueПараметр задаётся в секции spec.appConfig.omniauth:
autoLinkLdapUser: trueВход пользователей, найденных в LDAP
Чтобы пользователи, найденные в LDAP, могли входить сразу, а остальные отправлялись на одобрение администратору, сочетайте параметры auto_link_ldap_user и block_auto_created_users секции OmniAuth с параметром block_auto_created_users LDAP-сервера main (раздел «Вход пользователей, найденных в LDAP»).
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
gitlab_rails['omniauth_auto_link_ldap_user'] = true
# Пользователь не найден в LDAP — учётная запись создаётся заблокированной,
# до одобрения администратором.
gitlab_rails['omniauth_block_auto_created_users'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
# Пользователь найден в LDAP — вход разрешён сразу.
block_auto_created_users: false
# Остальные параметры подключения.
EOS/srv/code/config/gitlab.rb на томе конфигурации.global:
appConfig:
omniauth:
autoLinkLdapUser: true
# Пользователь не найден в LDAP — учётная запись создаётся заблокированной,
# до одобрения администратором.
blockAutoCreatedUsers: true
ldap:
servers:
main:
# Пользователь найден в LDAP — вход разрешён сразу.
block_auto_created_users: falseПараметры задаются в секции spec.appConfig:
omniauth:
autoLinkLdapUser: true
# Пользователь не найден в LDAP — учётная запись создаётся заблокированной,
# до одобрения администратором.
blockAutoCreatedUsers: true
ldap:
servers:
main:
# Пользователь найден в LDAP — вход разрешён сразу.
blockAutoCreatedUsers: falseРасписание синхронизации
Расписание задачи синхронизации записывается в формате cron. Что задача делает при каждом запуске, описано в разделе «Синхронизация с LDAP»; запуск вручную описан в разделе «Ручной запуск синхронизации».
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
gitlab_rails['ldap_sync_worker_cron'] = "0 * * * *"GITLAB_OMNIBUS_CONFIG, и в файл /srv/code/config/gitlab.rb.global:
appConfig:
cron_jobs:
ldap_sync_worker:
cron: "0 * * * *"Периодичность задаётся параметром cronJobs секции spec.appConfig:
cronJobs:
ldapSyncWorker:
cron: "0 * * * *"Применение конфигурации
Пример настройки: вход через OIDC и права из LDAP
Ниже приведена последовательность настройки, при которой пользователи входят через OIDC-провайдера (например, Keycloak), а группы, членства в них и роли приходят из LDAP.
Настройка включает в себя следующие шаги:
- Настройка LDAP-провайдера.
- Настройка OIDC-провайдера и включение связывания с LDAP.
- Проверка связывания при первом входе.
- Синхронизация прав.
Требования для настройки
Для настройки требуются:
- OIDC-провайдер.
- LDAP-каталог с теми же пользователями и с группами, имена которых позволяют определить роль.
- Сервисная учётная запись LDAP с правами на чтение каталога (параметры
bind_dnиpassword).
Значение uid или email в OIDC-провайдере должно совпадать со значением соответствующего атрибута в LDAP, иначе связывание не сработает.
Порядок поиска учётной записи описан в разделе «Как ищется учётная запись LDAP».
Настройка LDAP-провайдера
В записи сервера указываются каталог, база поиска и сервисная учётная запись, а её секция group_sync превращает имена групп в роли.
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
label: ldap
host: ldap.example.com
port: 3389
bind_dn: 'uid=viewer,ou=People,dc=example,dc=com'
password: 'viewer123'
base: 'ou=People,dc=example,dc=com'
uid: 'cn'
sync_name: true
# Не учитывать пользователей, заблокированных в каталоге (опционально).
user_filter: '(!(nsAccountLock=TRUE))'
# Пользователь найден в LDAP — вход разрешён сразу.
block_auto_created_users: false
group_sync:
create_groups: true
base: 'ou=Groups,dc=example,dc=com'
filter: '(objectClass=groupOfNames)'
top_level_group: 'LdapGroups'
name_mask: '(?<=-)[A-z0-9]*$'
owner: 'root'
role_mapping:
- by_name: '.*-maintainer-.*'
gitlab_role: 'maintainer'
- by_name: '.*-developer-.*'
gitlab_role: 'developer'
- by_name: '.*-participant-.*'
gitlab_role: 'reporter'
EOSgitlab_rails['ldap_enabled'] и gitlab_rails['ldap_servers'] те же, что во вкладке «Пакет для ОС Linux»; они записываются в файл /srv/code/config/gitlab.rb на томе конфигурации.global:
appConfig:
ldap:
servers:
main:
label: ldap
host: ldap.example.com
port: 3389
bind_dn: 'uid=viewer,ou=People,dc=example,dc=com'
password:
secret: code-ldap-password
key: password
base: 'ou=People,dc=example,dc=com'
uid: 'cn'
sync_name: true
# Не учитывать пользователей, заблокированных в каталоге (опционально).
user_filter: '(!(nsAccountLock=TRUE))'
# Пользователь найден в LDAP — вход разрешён сразу.
block_auto_created_users: false
group_sync:
create_groups: true
base: 'ou=Groups,dc=example,dc=com'
filter: '(objectClass=groupOfNames)'
top_level_group: 'LdapGroups'
name_mask: '(?<=-)[A-z0-9]*$'
owner: 'root'
role_mapping:
- by_name: '.*-maintainer-.*'
gitlab_role: 'maintainer'
- by_name: '.*-developer-.*'
gitlab_role: 'developer'
- by_name: '.*-participant-.*'
gitlab_role: 'reporter'Настройте конфигурацию в параметре servers секции spec.appConfig.ldap:
servers:
main:
label: ldap
host: ldap.example.com
port: 3389
bindDn: 'uid=viewer,ou=People,dc=example,dc=com'
password: 'viewer123'
base: 'ou=People,dc=example,dc=com'
uid: 'cn'
syncName: true
# Не учитывать пользователей, заблокированных в каталоге (опционально).
userFilter: '(!(nsAccountLock=TRUE))'
# Пользователь найден в LDAP — вход разрешён сразу.
blockAutoCreatedUsers: false
groupSync:
createGroups: true
base: 'ou=Groups,dc=example,dc=com'
filter: '(objectClass=groupOfNames)'
topLevelGroup: 'LdapGroups'
nameMask: '(?<=-)[A-z0-9]*$'
owner: 'root'
roleMapping:
- byName: '.*-maintainer-.*'
gitlabRole: 'Maintainer'
- byName: '.*-developer-.*'
gitlabRole: 'Developer'
- byName: '.*-participant-.*'
gitlabRole: 'Reporter'Настройка OIDC-провайдера и включение связывания с LDAP
Значение uid_field используется при поиске пользователя в LDAP. Оно должно совпадать со значением атрибута, указанного в параметре uid LDAP-сервера, или с адресом электронной почты — подробнее в разделе «Как ищется учётная запись LDAP».
Остальные параметры провайдера описаны в разделе «OpenID Connect (OIDC)».
- Пакет для ОС Linux
- Omnibus Docker
- Helm-чарт
- Модуль Deckhouse Kubernetes Platform
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_auto_link_ldap_user'] = true
gitlab_rails['omniauth_providers'] = [
{
name: 'openid_connect', # Не изменяйте это значение.
label: 'Keycloak', # Подпись кнопки входа.
groups_attribute: 'gitlab_group',
args: {
name: 'openid_connect',
scope: ['openid', 'profile', 'email'],
response_type: 'code',
issuer: 'https://keycloak.example.com/realms/example',
discovery: true,
client_auth_method: 'query',
uid_field: 'preferred_username',
send_scope_to_token_endpoint: false,
pkce: true,
client_options: {
identifier: '<client_id>',
secret: '<client_secret>',
redirect_uri: 'https://code.example.com/users/auth/openid_connect/callback'
}
}
}
]gitlab_rails['omniauth_enabled'], gitlab_rails['omniauth_auto_link_ldap_user'] и gitlab_rails['omniauth_providers'] те же, что во вкладке «Пакет для ОС Linux»; они записываются в файл /srv/code/config/gitlab.rb на томе конфигурации.Запись провайдера из этого примера хранится в объекте Secret и подключается из значений, рядом с которыми включается связывание:
global:
appConfig:
omniauth:
enabled: true
autoLinkLdapUser: true
providers:
- secret: code-omniauth-keycloak
key: providerНастройте конфигурацию в секции spec.appConfig.omniauth:
autoLinkLdapUser: true
providers:
- name: 'openid_connect' # Не изменяйте это значение.
label: 'Keycloak' # Подпись кнопки входа.
groupsAttribute: 'gitlab_group'
args:
name: 'openid_connect'
scope:
- 'openid'
- 'profile'
- 'email'
response_type: 'code'
issuer: 'https://keycloak.example.com/realms/example'
discovery: true
client_auth_method: 'query'
uid_field: 'preferred_username'
send_scope_to_token_endpoint: false
pkce: true
client_options:
identifier: '<client_id>'
secret: '<client_secret>'
redirect_uri: 'https://code.example.com/users/auth/openid_connect/callback'Проверка связывания при первом входе
Для проверки связывания выполните следующие шаги:
- Войдите под тестовым пользователем через OIDC-провайдера.
- Откройте страницу пользователя в административном разделе (
/admin/users/<username>/identities). У связанной учётной записи должно быть два идентификатора:openid_connectиldapmain(имя LDAP-идентификатора складывается из префиксаldapи имени LDAP-сервера, в примере —main).
Если LDAP-идентификатора нет, проверьте следующее:
- значения
uidили email в OIDC-провайдере и в LDAP совпадают; - пользователь попадает в область поиска
baseи не отсекается фильтромuser_filter; - параметр
auto_link_ldap_userвключён.
Синхронизация прав
Сразу после первого входа у пользователя есть учётная запись, но нет членства в группах и проектах. Дождитесь ближайшей синхронизации или запустите её вручную (раздел «Ручной запуск синхронизации»), после чего проверьте, что:
- группы созданы внутри группы, указанной в
group_sync.top_level_group; - пользователь добавлен в них с ролью, соответствующей
role_mapping.