LDAP-Server
Viele Systeme, wie Nexus
, unterstützen LDAP-Authentifizierung. Casdoor implementiert auch einen einfachen LDAP-Server, der Bind- und Suchoperationen unterstützt.
Dieses Dokument beschreibt, wie man sich mit dem LDAP-Server in Casdoor verbindet und eine einfache Login-Authentifizierung implementiert.
LDAP-Server-Port
Der LDAP-Server hört standardmäßig auf Port 389
. You can change the default port by modifying the ldapServerPort
value in conf/app.conf.
Wie es funktioniert
Ähnlich wie der LDAP-Client in Casdoor sind alle Benutzer im LDAP-Server Unterklassen von posixAccount
.
Wenn der Server einen Datensatz erhält, der von LDAP übertragen wird, wird er den cn
und ou
analysieren, wobei cn
den Benutzernamen und ou
den Organisationsnamen darstellt. Der dc
spielt keine Rolle.
Wenn es sich um eine Bind-Operation handelt, wird der Server Casdoor verwenden, um den Benutzernamen und das Passwort zu überprüfen und dem Benutzer in Casdoor die Berechtigung zu erteilen.
Wenn es sich um eine Suchoperation handelt, wird der Server überprüfen, ob die Suchoperation gemäß den Berechtigungen, die dem Client durch die Bind-Operation gewährt wurden, legal ist und eine Antwort zurückgeben.
Wir unterstützen nur Einfache Authentifizierung.
Wie man bindet
Im Casdoor LDAP-Server erkennen wir nur DN
in einem Format ähnlich diesem: cn=admin,ou=built-in,dc=example,dc=com
.
Bitte setzen Sie den DN
des Admin-Benutzers auf das oben genannte Format. Dann können Sie diesen DN
verwenden, um sich mit dem Passwort des Benutzers an den LDAP-Server zu binden, um sich bei Casdoor zur Überprüfung anzumelden. Wenn die Serverüberprüfung erfolgreich ist, wird dem Benutzer in Casdoor Autorität gewährt.
Wie man sucht
Sobald die Bind-Operation erfolgreich abgeschlossen ist, können Sie die Suchoperation durchführen. Es gibt einige Unterschiede zwischen Such- und Bind-Operationen.
- 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.