跳到主内容

LDAP 服务器

许多系统,如Nexus,支持LDAP认证。 Casdoor也实现了一个简单的LDAP服务器,支持绑定和搜索操作。

本文档描述了如何连接到Casdoor中的LDAP服务器并实现简单的登录认证。

LDAP 服务器端口号

LDAP服务器默认监听389端口。 You can change the default port by modifying the ldapServerPort value in conf/app.conf.

工作原理

与Casdoor中的LDAP客户端类似,LDAP服务器中的用户都是posixAccount的子类。

当服务器接收到LDAP传输的一组数据时,它将解析cnou,其中cn代表用户名,ou代表组织名称。 dc并不重要。

如果是绑定操作,服务器将使用Casdoor来验证用户名和密码,并在Casdoor中授予用户权限。

如果是搜索操作,服务器将根据绑定操作授予客户端的权限,检查搜索操作是否合法,并返回响应。

信息

我们只支持简单认证

如何绑定

在Casdoor LDAP服务器中,我们只认可类似于这种格式的DNcn=admin,ou=built-in,dc=example,dc=com

请将管理员用户的DN设置为上述格式。 然后,您可以使用这个DN和用户的密码绑定到LDAP服务器,以登录到Casdoor进行验证。 如果服务器验证成功,用户将在Casdoor中被授予权限。

如何搜索

一旦绑定操作成功完成,您就可以进行搜索操作。 搜索和绑定操作之间存在一些差异。

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