Pular para o conteúdo principal

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.

informação

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 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.