Перейти к основному содержанию

LDAP-сервер

Многие системы, такие как Nexus, поддерживают аутентификацию LDAP. Casdoor также реализует простой LDAP-сервер, который поддерживает операции bind и search.

Этот документ описывает, как подключиться к 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 не имеет значения.

Если это операция bind, сервер будет использовать Casdoor для проверки имени пользователя и пароля и предоставления пользователю разрешений в Casdoor.

Если это операция search, сервер проверит, является ли операция поиска законной, в соответствии с разрешениями, предоставленными клиенту операцией bind, и вернет ответ.

информация

Мы поддерживаем только Простую аутентификацию.

Как выполнить Bind

На LDAP-сервере Casdoor мы узнаем только DN, аналогичный этому формату: cn=admin,ou=built-in,dc=example,dc=com.

Пожалуйста, установите DN администратора в указанный выше формат. Затем вы можете использовать этот DN для bind к LDAP-серверу с паролем пользователя для входа в Casdoor для проверки. Если проверка сервера прошла успешно, пользователю будет предоставлена власть в Casdoor.

После успешного завершения операции bind вы можете выполнить операцию поиска. Существуют некоторые различия между операциями поиска и bind.

  • To search for a certain user, such as Alice under the built-in organization, you should use a DN like this: ou=built-in,dc=example,dc=com, and add cn=Alice in the Filter field.
  • To search for all users under a certain organization, such as all users in built-in, you should use a DN like this: ou=built-in,dc=example,dc=com, and add cn=* in the Filter field.
  • To search for all users in all organizations (assuming the user has sufficient permissions), you should use a DN like this: ou=*,dc=example,dc=com, and add cn=* 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
    Returns subschemaSubentry: 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.