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
Aliceunder thebuilt-inorganization, you should use aDNlike this:ou=built-in,dc=example,dc=com, and addcn=Alicein the Filter field. - To search for all users under a certain organization, such as all users in
built-in, you should use aDNlike 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
DNlike 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.