LDAPサーバー
多くのシステムは、Nexus
のように、LDAP認証をサポートしています。 Casdoorは、bindおよびsearch操作をサポートするシンプルな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
は関係ありません。
bind操作の場合、サーバーはCasdoorを使用してユーザー名とパスワードを検証し、Casdoor内でユーザーに権限を付与します。
search操作の場合、サーバーはbind操作によってクライアントに付与された権限に基づいて、search操作が合法かどうかをチェックし、応答を返します。
私たちはシンプル認証のみをサポートしています。
バインド方法
Casdoor LDAPサーバーでは、この形式に似たDN
のみを認識します:cn=admin,ou=built-in,dc=example,dc=com
。
管理ユーザーのDN
を上記の形式に設定してください。 その後、このDN
を使用してユーザーのパスワードでLDAPサーバーにバインドし、Casdoorで検証にログインできます。 サーバー検証が成功すると、ユーザーはCasdoor内で権限を付与されます。
検索方法
bind操作が成功すると、search操作を実行できます。 search操作とbind操作にはいくつかの違いがあります。
- 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.