В данной статье перечислены основные нюансы, связанные с настройкой LDAP-аутентификации для версии 1.20.4.
Для удобства отладки аутентификации предлагается выставить уровень логирования в файле /etc/gitea/app.ini в блоке [log]:
LEVEL = Trace
Конфигурацию "LDAP (via BindDN)" стоит использовать, если пользователи системы находятся в разных юнитах сложной структуры дерева AD. В таком случае должна быть выделена отдельная сервисная УЗ, с помощью которой будет выполняться поиск пользователей.
Ниже описана конфигурация "LDAP (simple auth)", которую стоит использовать, если ВСЕ пользователи находятся в одном юните дерева AD, например в OU=Service Accounts, OU=GOROD1, OU= ZAVOD, DC=ooo, DC=kompaniya.
• База для поиска пользователя
Здесь удобнее всего указывать контроллеры домена AD, например:
DC=ooo,DC=kompaniya
• DN пользователя
"Путь" до записи соответствующего пользователя, с подстановкой логина из формы аутентификации в Gitea:
СN=%s,OU=Service Accounts,OU=ZAVOD,OU=GOROD,DC=ooo,DC= kompaniya
(Соответствующий параметр %s будет заменен именем пользователя, указанным в форме входа)
• Фильтр пользователя
LDAP – фильтр, однозначно указывающий на запись пользователя в AD. Здесь также используется подстановка, но немного иной формы:
(&(sAMAccountName=%[1]s)(objectclass=person)(objectclass=user))
(Соответствующий параметр [1]s будет заменен именем пользователя, указанным в форме входа)
Лучше использовать атрибут sAMAccountName, указывающий на имя пользователя.
• Фильтр администратора
С помощью данного фильтра можно указывать, какие пользователи получат административные права в Gitea. Например, если есть отдельная группа администраторов, в качестве фильтра целесообразно использовать атрибут memberof:
(memberOf=CN=system_admin,OU=System,OU=Groups,DC=ooo,DC= kompaniya)
• Ограниченный фильтр
С помощью данного фильтра можно ограничить выбранных пользователей:
(|(memberOf=CN=system_operator,...,DC=kompaniya)(memberOf=CN=system_master,...,DC= kompaniya))
• Атрибут группы, содержащий список пользователей
Здесь уместнее всего использовать атрибут member.
• Атрибут пользователя в группе
Здесь уместнее всего использовать атрибут dn.
• Сопоставление групп LDAP с командами в Gitea
Обязательно используйте upper case для обозначения объектов AD, таких как CN, OU, DC. В данном поле можно указать несколько групп, и для каждой группы можно указать несколько команд и организаций. Например:
{
"CN=system_operator,OU=System,OU=Groups,DC=ooo,DC= kompaniya ":{" System ":["Operators"]},
"CN= system_master,OU= System,OU=Groups,DC= ooo,DC= kompaniya ":{" System ":["Owners"]},
"CN= system_admin,OU= System,OU=Groups,DC= ooo,DC= kompaniya ":{"System":["Owners"],"promuc":["Owners"]}
}
Ниже скриншоты конфигурации "LDAP (simple auth)" для проекта: