Установка и настройка LDAP


Настройка LDAP в GitFlic

Для перехода к настройкам перейдите в панель администрирования и откройте раздел Настройка LDAP

Для создания новой связи с базой данных, нажмите кнопку Создать

В поле “Название” укажите то название, которое будет отображаться непосредственно в панели администратора.

В поле “Адрес LDAP сервера” укажите адрес, по которому находится ваш LDAP сервер (если он запущен локально, то напишите localhost).

В поле “Порт LDAP сервера” укажите порт (по умолчанию он занимает порт 389, если у вас не указан иной).

В поле “UserDn” указывается rootdn вашего LDAP сервера, скопируйте его из вашей конфигурации.

В поле “Пароль” указывается rootpw вашего LDAP сервера, скопируйте его из вашей конфигурации. Пароль не сохраняется в системе и при каждом внесении изменений необходимо вводить его повторно.

В поле “BaseDn” указывается dn вашего LDAP сервера, скопируйте его из вашей конфигурации.

В поле “LDAP атрибут для email пользователя” необходимо указать поле из вашего LDAP, по которому будет проходить авторизация пользователей в GitFlic. Обратите внимание, что валидация в форме авторизации GitFlic срабатывает только на электронную почту.

В поле “LDAP атрибут для username пользователя” необходимо указать такое поле, которое будет уникально для каждого отдельного пользователя в базе данных. Например, если вы укажите в качестве имени пользователя поле “cn”, то авторизоваться сможет только один из пользователей с таким из “cn”, так как при первом входе создается профиль пользователя с таким именем пользователя, а второй пользователель столкнется с ошибкой, потому что создание профиля с существующим именем пользователя невозможно.

В поле “Описание LDAP соединения” укажите описание, которое будет отображаться в панели администратора GitFlic.

После заполнения всех полей, нажмите кнопку “Создать”. При успешном исходе вас перенаправит на страницу со списком созданных соединений LDAP.

Вход при помощи LDAP

На странице входа нажмите кнопку Войти через LDAP. Вас переведет на аналогичную страницу входа, введите учетные данные, которые вам сообщил администратор, нажмите кнопку “Войти”

Дополнительная информация по работе с LDAP

  • В application.properties рекомендуется указать параметр gitFlic.aes.secret, который используется в качестве пароля для шифрования пароля от базы LDAP. Вы можете задать свой пароль или ничего не назначать, в таком случае используется стандартный пароль(небезопасно).

  • На сервере хранится хеш пароля, который используется только в том случае, если стоит галочка “Аутентифицировать пользователя если LDAP сервер недоступе”, то при входе пользователя, в случае недоступености LDAP сервера GitFlic сверяет хеш в базе и введеный пароль. Если галочки нет, то в случае, если сервер недоступен, учётная запись блокируется: не будет возможности работать с проектом через ssh, не будет работать токен и т.д.

  • При работе через https с GitFlic при каждом запросе к GitFlic(clone, push, pull и т.д.) GitFlic обращается к LDAP серверу и в случае, если LDAP сервер не доступен, то пользователь блокируется. При работе через ssh такая проверка не производится, т.е. если заблокировать пользователя в системе LDAP то доступ к вебинтерфейсу и к работе через http в git доступа не будет, но если пользователь прожолжит работу через ssh то в GitFlic его учётная запись не заблокируется.

  • В gitflic настроен worker который раз в час обращаться к LDAP серверу для проверки и обновления пользователей. Процесс выполняет следующие проверки доступа:

    • Проверяет, что пользователь ещё присутствует в LDAP
    • Если сервером LDAP является Active Directory, убедитесь, что пользователь активен (не заблокирован/отключен). В Active Directory пользователь помечается как отключенный/заблокированный, если в атрибуте управления учетными записями пользователя ( userAccountControl:1.2.840.113556.1.4.803) установлен бит 2. (поиск по битовой маске в LDAP)
  • Для оперативной блокировки пользователей можно вручную заблокировать пользователя в панели администратора сервиса GitFlic.

  • Поля имя и фамилия заполняются из атрибутов givenName (имя) и middleName (фамилия). На данный момент эти параметры нельзя переопределить при настройке. После первого входа данные параметры можно переопределить вручную.

    Добавление локального сертификата для работы LDAPS.

Если вам требуется использовать локальный сертификат для работы с LDAPS то, кроме добавления его на сервер где запущен GitFlic, сертификат так же необходимо импортировать в JRK. Если не выполнить данное дейтсвие то при установке галочки ssl в настройка ldap в логах появится сообщение Ошибка при создании LDAP подключения: simple bind failed. Для сертификатов которые подтверждаются через глобальные центры сертификации данные настройки можно не производить.

Ubuntu

  • Узнайте где находится папка с сертификатами Java. Чтобы найти местоположение $JAVA_HOME выполните команду:
readlink -f /usr/bin/java | sed "s:bin/java::"

cacertsнаходятся в lib/security/cacerts. Запись ниже можно использовать как переменную с корректным путём до cacerts.

$(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts
  • Выполните импорт сертификата.
keytool -import -alias <alias> -file <file_path> -keystore $JAVA_HOME/lib/security/cacerts

В примере ниже используется:

  • -alias ya.ru
  • Полный путь до сертификат -file ~/tmp/ya.crt
  • Путь до сертификатов JRK -keystore /usr/lib/jvm/java-18-openjdk-amd64/lib/security/cacerts
keytool -import -alias ya.ru -file ~/tmp/ya.crt  -keystore /usr/lib/jvm/java-18-openjdk-amd64/lib/security/cacerts

При запросе пароля Enter keystore password: попробуйте просто нажать Enter или пароль changeit

Посмотреть сертификаты можно командой:

keytool -list -v -keystore $(readlink -f /usr/bin/java | sed "s:bin/java::")lib/security/cacerts

Установка LDAP на Mac/Linux

Исходная статья

Для установки вам поребуются:

  • Homebrew
  • OpenLDAP, можно загрузить по ссылке (актуальная на момент написания статьи 2.6.3)
  • Браузер для работы с записями LDAP, например JXplorer или ldapbrowser

1) Berkeley DB необходима для работы OpenLDAP. При помощи терминала установите Berkeley DB, используя следующую команду:

brew install berkeley-db4

2) (необязательно) Если вам необходимо сохранить путь к приложению в PATH, выполните:

echo 'export PATH="/usr/local/opt/berkeley-db@4/bin:$PATH"' >> ~/.bash_profile

3) Теперь необходимо сконфигурировать OpenLDAP. Разархивируйте OpenLDAP.tgz. Откройте терминал в директории openldap-<version> и выполните команду:

./configure CPPFLAGS="-I/usr/local/opt/berkeley-db@4/include" LDFLAGS="-L/usr/local/opt/berkeley-db@4/lib"

Обратите внимание, что значения LDFLAGS и CPPFLAGS берутся из выходных данных команды установки Berkeley DB.

4) Если все происходит без ошибок, то последним сообщением в терминале будет: “Please “make depend” to build dependencies”. Следующим шагом необходимо выполнить команду:

make depend

5) Выполнение предыдущей команды может занять некоторое время. Следующая команда позволит собрать OpenLDAP и подготовить к установке:

make

6) (необязательно) Рекомендуем выполнить команду для тестирования, чтобы убедиться что все происходит в соответствии с инструкцией:

make test

Выполнение этой команды занимает существенное количество времени, порядка 15-20 минут.

7) Теперь можно приступить к установке OpenLDAP. Выполните команду для установки:

make install

После установки у вас появятся 2 папки /usr/local/var/openldap-data и /usr/local/etc/openldap. Если у вас не создалась папка opedldap-data, создайте ее самостоятельно при помощи команды в терминале mkdir. Если установка прошла с ошибками, то повторите команду установки с командой sudo

8) После установки необходимо дописать конфигурационный файл. Для открытия файла выполните команду:

cd /usr/local/etc/openldap
vi slapd.conf

Если будет сообщение, что у вас недостаточно прав, то откройте файл при помощи sudo.

Допишите в файл следующие строки:

include         /usr/local/etc/openldap/schema/cosine.schema
include         /usr/local/etc/openldap/schema/nis.schema
include         /usr/local/etc/openldap/schema/inetorgperson.schema

и следующие значения внизу файла:

suffix          "dc=my-domain,dc=com"
rootdn          "cn=Manager,dc=my-domain,dc=com"
rootpw          secret

9) Теперь используйте команду для запуска OpenLDAP:

sudo /usr/local/libexec/slapd -d3

После успешного запуска в логах будет сообщение  “application started” или подобное. Создайте новую вкладку, чтобы продолжить настройку.

10) Создайте новый файл root-ou.ldif и добавьте в него следующее содержание:

dn:dc=my-domain,dc=com
objectClass:dcObject
objectClass:organizationalUnit
dc:my-domain
ou:my-domain

Сохраните и выполните следующую команду:

ldapadd -D "cn=Manager,dc=my-domain,dc=com" -W -x -f /<Location>/root-ou.ldif

11) В application.properties необходимо указать следующие параметры:

  • gitflic.aes.secret отвечает за ключ шифрования для связи Gitflic с внешним сервером или приложением. Данное свойство должно содержать в себе любую строку из латинских символов, придуманной пользователем. При изменении ключа подключение будет потеряно.

  • togglz.features.GITFLIC_LDAP.enabled=true отвечает за включение и выключение функции LDAP (стандартное значение для данного свойства true).