LDAP-сервер
Багато систем, як Nexus, підтримують LDAP-аутентифікацію. Casdoor також реалізує простий LDAP-сервер, який підтримує операції прив'язки та пошуку.
Цей документ описує, як підключитися до LDAP-сервера в Casdoor та реалізувати просту аутентифікацію входу.
Порт LDAP-сервера
LDAP-сервер за замовчуванням слухає порт 389. You can change the default port by modifying the ldapServerPort value in conf/app.conf.
Як це працює
Подібно до LDAP-клієнта в Casdoor, всі користувачі на LDAP-сервері є підкласами posixAccount.
Коли сервер отримує набір даних, переданих LDAP, він аналізує cn та ou, де cn представляє ім'я користувача, а ou - назву організації. Значення dc не має значення.
Якщо це операція прив'язки, сервер використовуватиме Casdoor для перевірки імені користувача та пароля та надання користувачу дозволу в Casdoor.
Якщо це операція пошуку, сервер перевірить, чи є операція пошуку законною, відповідно до дозволів, наданих клієнту операцією прив'язки, та поверне відповідь.
Ми підтримуємо лише Просту аутентифікацію.
Як прив'язатися
На LDAP-сервері Casdoor ми визнаємо лише DN, схожий на цей формат: cn=admin,ou=built-in,dc=example,dc=com.
Будь ласка, встановіть DN адміністратора до вищезазначеного формату. Потім ви можете використовувати цей DN для прив'язки до LDAP-сервера з паролем користувача для входу в Casdoor для перевірки. Якщо перевірка сервера пройшла успішно, користувачу буде надано повноваження в Casdoor.
Як шукати
Після успішного завершення операції прив'язки ви можете виконати операцію пошуку. Є деякі відмінності між операціями пошуку та прив'язки.
- To search for a certain user, such as
Aliceunder thebuilt-inorganization, you should use aDNlike this:ou=built-in,dc=example,dc=com, and addcn=Alicein the Filter field. - To search for all users under a certain organization, such as all users in
built-in, you should use aDNlike this:ou=built-in,dc=example,dc=com, and addcn=*in the Filter field. - To search for all users in all organizations (assuming the user has sufficient permissions), you should use a
DNlike this:ou=*,dc=example,dc=com, and addcn=*in the Filter field. - To search for all users in a specific group, you should use a filter query like this:
(memberOf=organization_name/group_name)in the Filter field.
Supported RFC-Style Features
Partial Root DSE Query Support
The Root DSE (baseDN="") provides directory capabilities.
Query namingContexts (organization list):
ldapsearch -x -H ldap://<casdoor-host>:389 -D "cn=admin,ou=built-in" -w <passwd> -b "" -s base "(objectClass=*)" namingContexts
Returns visible organization DNs.Query subschemaSubentry:
ldapsearch -x -H ldap://<casdoor-host>:389 -D "cn=admin,ou=built-in" -w <passwd> -b "" -s base "(objectClass=*)" subschemaSubentry
ReturnssubschemaSubentry: cn=Subschema.
Schema Query Support
Query objectClasses: ldapsearch -x -H ldap://<casdoor-host>:389 -D "cn=admin,ou=built-in" -w <passwd> -b "cn=Subschema" -s base "(objectClass=*)" objectClasses
Returns definitions for posixAccount and posixGroup.
POSIX Filters
(objectClass=posixAccount)returns user list.(objectClass=posixGroup)returns group list under organization (e.g.,ldapsearch -x -H ldap://<casdoor-server>:389 -D "cn=admin,ou=built-in" -w <passwd> -b "ou=<org>" "(objectClass=posixGroup)").
Note: (objectClass=posixGroup) Does not support combined searches like (&(objectClass=posixGroup)(cn=<group>)). Please use memberOf for searching members in a group.