Zum Hauptinhalt springen

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.

Info

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