Централизованная аутентификация пользователей конфигурации OpenLDAP

задняя часть

Введение в LDAP

служба каталогов

Каталог — это профессиональная распределенная база данных, оптимизированная для запросов, просмотра и поиска, которая представляетДревовидная структура для организации данных, точно так же, как каталог файлов в системе Linux/Unix. В отличие от реляционных баз данных, базы данных-каталоги имеют отличныепроизводительность чтения,ноплохая скорость записи, и нет сложных функций типа обработки транзакций и отката, что не подходит для хранения часто изменяемых данных. такКаталоги созданы для запросов. LDAP (облегченный протокол доступа к каталогам) позволяет управлять данными каталога по одному.

Функции

  • Структура LDAP представлена ​​деревом, а не таблицей. Из-за этого вы не можете использовать операторы SQL
  • LDAP может очень быстро получать результаты запроса, но с точки зрения записи он намного медленнее.
  • LDAP обеспечивает быстрый способ запроса статических данных
  • Модель клиент/сервер. Сервер используется для хранения данных. Клиент предоставляет инструменты для управления информационными деревьями каталогов.
  • Эти инструменты могут представить вам содержимое базы данных в текстовом формате (формат обмена данными LDAP, LDIF).
  • LDAP — это открытый интернет-стандарт, а протокол LDAP — межплатформенный интернет-протокол.

Как LDAP упорядочивает данные

На следующем рисунке показано дерево каталогов LDAP:

img
img

В этом дереве нам нужно понимать следующие понятия:

Вход

Каждая сетка на рисунке является записью Entry, запись имеет несколько атрибутов и несколько значений, а также может содержать несколько подзаписей.

Отличительное имя, DN

Подобно абсолютному пути в Linux, он указывает абсолютный путь, запускаемый из корня дерева каталогов, который является уникальным идентификатором записи. DN ребенка на рисунке может быть выражено как:

cn=baby,ou-marketing,ou=people,dc=mydomain,dc=org

Относительное отличительное имя Относительное DN

Относительное отличительное имя — это содержимое слева от первого DN.

Например, RDN ребенка может быть выражено как

cn=baby

Вообще говоря, RDN используют записи dc=, ou=, c=, o= в качестве контейнеров, что означает, что они могут содержать подзаписи.

Базовое отличительное имя Базовое DN

Относится к корню каталога, DN этого рисунка:

dc=mydomain,dc=org

Атрибуты

Каждая запись может иметь множество атрибутов (Attribute), например, у обычных людей есть такие атрибуты, как имя, адрес, телефон и т.д. У каждого атрибута есть имя и соответствующее значение. Значение атрибута может быть одиночным или множественным. Например, у вас есть несколько почтовых ящиков.

Атрибуты не определены произвольно, они должны соответствовать определенным правилам, и этоПравила могут быть сделаны через схему. Например, если запись не включена в схему inetorgpersonobjectClass: inetOrgPerson, то для него нельзя указать свойство employeeNumber, так как employeeNumber определен в inetOrgPerson.

LDAP разработал атрибуты (такие как commonName, surname) для общих объектов в кадровых организациях. Вот некоторые часто используемые псевдонимы:

Атрибуты псевдоним грамматика описывать значение (пример)
commonName cn Directory String Имя sean
surname sn Directory String фамилия Chow
organizationalUnitName ou Directory String Название подразделения (отдела) IT_SECTION
organization o Directory String Название организации (компании) example
telephoneNumber Telephone Number номер телефона 110
objectClass Встроенные свойства organizationalPerson

класс объекта

Класс объектов представляет собой набор атрибутов.LDAP инкапсулирует множество общих объектов в организации и инкапсулирует их в класс объектов. Например, person (лицо) содержит такие атрибуты, как фамилия (sn), имя (cn), номер телефона (telephoneNumber), пароль (userPassword), а OrganizationPerson — это класс наследования лица (person), который также содержит титулы. помимо вышеперечисленных атрибутов (название), почтовый индекс (postalCode), почтовый адрес (postalAddress) и другие атрибуты.

LDAP также определяет атрибуты объектов, из которых есть два типа атрибутов:

  • Обязательные/обязательные обязательные атрибуты
  • May/Optional необязательные расширенные атрибуты

Существует три типа классов объектов: Структурные, Абстрактные и Вспомогательные. Структурный тип является самым основным типом, он определяет основные свойства объектной сущности, каждая запись принадлежит одному и только одному структурному классу объектов. Абстрактный тип может быть структурным типом или другим суперклассом абстрактного типа, который объединяет общие части свойств объекта вместе, называемым шаблоном других классов, и запись не может напрямую интегрировать класс объекта абстрактного типа. Вспомогательные типы определяют расширенные свойства объектных сущностей. Каждая запись имеет по крайней мере один класс структурных объектов.

Как и объектно-ориентированные, классы объектов LDAP могут выполнять такие операции, как полиморфизм наследования:

img
img

Schema

Класс объекта (ObjectClass), тип атрибута (AttributeType) и синтаксис (Syntax) соответственно определяют элементы, атрибуты и значения. Отношения между ними показаны на следующем рисунке. Таким образом, они составляют схему — набор классов объектов.

img
img

LDAP-файл

Файл формата обмена данными LDAP, который хранится в текстовом виде и используется для обмена данными между серверами. Добавление данных и изменение данных необходимо выполнять через файл LDIF. Можно провести аналогию с файлом SQL реляционной базы данных.

Формат файла LDIF обычно следующий:

dn: <识别名>
<属性 1>: <值 1>
<属性 2>: <值 2>
...

Установить

yum install -y openldap openldap-servers openldap-clients
service slapd start
# 查看状态
netstat -antup | grep -i 389

настраивать

Запустите команду slappaswwd, чтобы сгенерировать зашифрованный текст пароля администратора:

[root@localhost openldap-2.4.46]# slappasswd
New password:
Re-enter new password:
{SSHA}V66P95ZEFTur6OZYQf10L4h8hlTeUakC

Во-первых, мы сначала создаем файл в формате Modify.ldif и введите следующий контент:

# 修改管理员密码
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}V66P95ZEFTur6OZYQf10L4h8hlTeUakC

# 管理员的DN前缀(一般为Base DN)
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=my-domain,dc=com

# 管理员的用户名
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=my-domain,dc=com

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=admin,dc=my-domain,dc=com" read by * none

Выполните следующую команду, чтобы завершить изменения в конфигурации службы LDAP:

ldapadd -Y EXTERNAL -H ldapi:/// -f modify.ldif

добавить узел

Давайте создадим новый base.ldif и добавим следующее содержимое Entry:

dn: dc=my-domain,dc=com
dc: my-domain
objectClass: top
objectClass: domain

dn: cn=admin,dc=my-domain,dc=com
objectClass: organizationalRole
cn: admin
uid: admin
mail: admin@my-domain.com

dn: cn=testuser,dc=my-domain,dc=com
objectClass: organizationalRole
cn: testuser
uid: testuser
mail: testuser@my-domain.com
description: Just A Test User

Запустите команду для вставки данных:

ldapadd -x -W -D "cn=admin,dc=my-domain,dc=com" -f base.ldif
# 检查是否添加成功
ldapsearch -x -b 'dc=my-domain,dc=com' '(objectClass=*)'

Добавить пользователя

P.S. Адресы тестового сервера появляются ниже: 10.10.101.29, порт 389 по умолчанию, BDN является DC = My-Domain, DC = COM

Можно использовать команду режима низкой эффективностиПрограммное обеспечение администратора LDAPОсуществлять визуальное управление.

Вы можете видеть, что информация о добавленном пользователе выглядит следующим образом (обратите внимание на добавление атрибута userPassword, который может быть сгенерирован предыдущей командой):

LDAP-соединение с другими инструментами

Конфигурация в Redmine

В режиме управления, аутентификации добавьте следующую информацию:

Нажмите «Управление» > «Пользователи», создайте нового пользователя и добавьте вновь созданного пользователя через LDAP:

Затем вы можете войти в эту учетную запись с помощью uid и userPassword, установленных LDAP.

Настроить в Дженкинсе

Выберите «Настроить глобальную безопасность» в разделе «Управление системой», выберите «Управление доступом к LDAP» и введите следующее (чтобы нажать «Расширенная конфигурация сервера», чтобы настроить BDN и другую информацию).

Это можно проверить со следующими настройками Test LDAP:

использованная литература

https://www.itzgeek.com/how-tos/linux/centos-how-tos/step-step-openldap-server-configuration-centos-7-rhel-7.html

http://seanlook.com/2015/01/21/openldap-install-guide-ssl/

https://zhuanlan.zhihu.com/p/32732045

https://segmentfault.com/a/1190000002607140

https://www.cnblogs.com/lemon-le/p/6266921.html

http://www.pfeng.org/archives/564

http://www.pfeng.org/archives/580