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传输的一组数据时,它将解析cn
和ou
,其中cn
代表用户名,ou
代表组织名称。 dc
并不重要。
如果是绑定操作,服务器将使用Casdoor来验证用户名和密码,并在Casdoor中授予用户权限。
如果是搜索操作,服务器将根据绑定操作授予客户端的权限,检查搜索操作是否合法,并返回响应。
我们只支持简单认证。
如何绑定
在Casdoor LDAP服务器中,我们只认可类似于这种格式的DN
:cn=admin,ou=built-in,dc=example,dc=com
。
请将管理员用户的DN
设置为上述格式。 然后,您可以使用这个DN
和用户的密码绑定到LDAP服务器,以登录到Casdoor进行验证。 如果服务器验证成功,用户将在Casdoor中被授予权限。
如何搜索
一旦绑定操作成功完成,您就可以进行搜索操作。 搜索和绑定操作之间存在一些差异。
- 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.