Servidor LDAP
Muitos sistemas, como o Nexus
, suportam autenticação LDAP. O Casdoor também implementa um servidor LDAP simples, que suporta operações de bind e busca.
Este documento descreve como se conectar ao servidor LDAP no Casdoor e implementar autenticação de login simples.
Porta do Servidor LDAP
O servidor LDAP escuta na porta 389
por padrão. You can change the default port by modifying the ldapServerPort
value in conf/app.conf.
Como Funciona
Semelhante ao cliente LDAP no Casdoor, os usuários no servidor LDAP são todos subclasses de posixAccount
.
Quando o servidor recebe um conjunto de dados transmitido pelo LDAP, ele irá analisar o cn
e o ou
, onde cn
representa o nome de usuário e ou
representa o nome da organização. O dc
não importa.
Se for uma operação de bind, o servidor usará o Casdoor para verificar o nome de usuário e a senha e conceder permissão ao usuário no Casdoor.
Se for uma operação de busca, o servidor verificará se a operação de busca é legal, de acordo com as permissões concedidas ao cliente pela operação de bind, e retornará uma resposta.
Nós só suportamos Autenticação Simples.
Como Fazer Bind
No servidor LDAP do Casdoor, nós só reconhecemos DN
em um formato semelhante a este: cn=admin,ou=built-in,dc=example,dc=com
.
Por favor, defina o DN
do usuário admin para o formato acima. Então, você pode usar este DN
para fazer bind no servidor LDAP com a senha do usuário para fazer login no Casdoor para verificação. Se a verificação do servidor for bem-sucedida, o usuário receberá autoridade no Casdoor.
Como Fazer Busca
Uma vez que a operação de bind seja concluída com sucesso, você pode realizar a operação de busca. Há algumas diferenças entre as operações de busca e 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.