メインコンテンツにスキップ

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によって送信されたデータセットを受信すると、cnouを解析します。ここで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 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.