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.
Как выполнить Search
После успешного завершения операции bind вы можете выполнить операцию поиска. Существуют некоторые различия между операциями поиска и bind.
- To search for a certain user, such as
Alice
under thebuilt-in
organization, you should use aDN
like this:ou=built-in,dc=example,dc=com
, and addcn=Alice
in the Filter field. - To search for all users under a certain organization, such as all users in
built-in
, you should use aDN
like 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
DN
like 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.