基本認証: LDAP ポリシー

ポリシー名

基本認証 - LDAP

概要

LDAP で定義されたユーザ-パスワードを使用して基本認証メカニズムに基づいてアクセスを許可する

カテゴリ

セキュリティ

使用可能な最初の Mule バージョン

4.0.0

返される状況コード

401 - 未承認または無効なクライアントアプリケーションのログイン情報

Lightweight Directory Access Protocol (LDAP) 認証ポリシーは、LDAP 認証メカニズムを使用して API へのアクセスを制限する方法を指定します。このポリシーを使用できるのは、Mule 4 以降のみです。

エラーに遭遇すると、基本認証 - LDAP ポリシーは WWW-Authenticate: Basic realm="mule-realm"​ の形式で「WWW-Authenticate」HTTP ヘッダー項目を返します。

LDAP は反転木の一種で、基本的にはそれぞれの葉がユーザ名とパスワードのペア、そして関連するメタデータです。各レベルは木の枝のように分かれています。LDAPの詳細については、​「LDAP について」​を参照してください。

ポリシーのしくみ

基本認証 - LDAP ポリシーは、保護されているリソースに対する要求をインターセプトして、Authorization​ HTTP ヘッダーを確認します。

そして、Base64 でエンコードされているユーザ名とパスワードを抽出して、設定されている LDAP インスタンスに対して、提供されている LDAP コンテキストにおいてユーザのログイン情報が正しいかどうかを判断するように要求します。

ログイン情報に対する基本認証 - LDAP ポリシーは、以下の方法を使用して設定できます。

  • 指定されているレベルでユーザ名とパスワードのペアを検索する。

  • 指定されているレベルとその下位レベルでユーザ名とパスワードのペアを検索する。ただし、この検索オプションは包括的であるため、パフォーマンスが低下することがあります。

検索スコープ

検索スコープオプションは、使用しているポリシーバージョンによって異なります。検索スコープオプションは、LDAP 1.0.0 では 1 レベル、LDAP 1.1.0 では 2 レベル (サブツリー) となります。

one level​ または subtree​ の検索スコープは、LDAP Search in subtree​ オプションを使用して選択します。

LDAP search base​は、ディレクトリツリー内の検索の開始点です。

1 レベル検索スコープ

このオプションを使用すると、検索条件は LDAP search base​直下のオブジェクトのみに影響しますが、LDAP search base​自身は含まれません。

次の例では、第 1 レベルに 4 つのエントリ (2 つのユーザと 2 つのグループ) があります。検索にはこれらのエントリのみが含まれます。

search scope

検索条件を (uid={0})​ に設定した場合、Jane​ と Paul​ のみが見つかります。グループエントリは考慮されません。

サブツリー検索スコープ

このオプションを使用すると、基本認証 - LDAP ポリシーは LDAP search base​の下のサブツリーも 調べ、LDAP search base​レベルも含めます。ただし、この動作によりパフォーマンスが影響を受けます。

上の例では、分析される領域には組織全体が含まれます。組織のすべてのレベルでグループエントリとユーザエントリが考慮されます。

search scope2

ポリシーのパラメータの設定

UI から基本認証 - LDAP ポリシーを API に適用する場合は、LDAP または Active Directory に接続するための以下のパラメータを設定できます。

パラメータ 説明 LDAP Server URL (LDAP サーバ URL)

ポート番号を含む、LDAP または LDAPS サーバの URL。

LDAP User DN (LDAP ユーザ DN)

LDAP のユーザをトラバースおよびリストするためのアクセス権を持つユーザまたはユーザグループの名前。

LDAP User Password (LDAP ユーザパスワード)

ユーザまたはユーザグループのパスワード。パスワードはセキュアな値でなければなりません。これは、指定すると表示または再取得できなくなる値です。

LDAP Search Base (LDAP 検索ベース)

ディレクトリツリー内の検索の開始点。

LDAP Search Filter (LDAP 検索条件)

Active Directory または OpenLDAP モデルの検索条件。例を参照してください。

LDAP または Active Directory に正常に接続するには、すべてのパラメータが必要です。

Active Directory の設定例

以下の値を設定することで、Active Directory の LDAP 認証を設定できます。

項目 リテラル文字列値の例 セキュアプロパティプレースホルダの例

LDAP Server URL (LDAP サーバ URL)

ldap://174.19.33.17:389/

${ldap.server.url}​

LDAP Secure Server URL (SSL) (LDAP セキュアサーバ URL (SSL))

ldaps://my-company-ldap.cloudhub.io:1010/

${ldap.server.url}​

LDAP Server User DN (LDAP サーバユーザ DN)

CN=Administrator,CN=Users,DC=my-company,DC=com

${ldap.user.dn}​

LDAP User Password (LDAP ユーザパスワード)

somePassword

${ldap.password}​

LDAP Search Base (LDAP 検索ベース)

CN=Users,DC=my-company,DC=com

${ldap.search.base}​

LDAP Search Filter (LDAP 検索条件)

(sAMAccountName={0}​)

${ldap.search.filter}​

例の検索条件文字列は Active Directory アプリケーションに固有です。

OpenLDAP の設定例

以下の値を設定することで、OpenLDAP の LDAP 認証を設定できます。

項目 リテラル文字列値の例 セキュアプロパティプレースホルダの例

LDAP Server URL (LDAP サーバ URL)

ldap://174.19.33.17:389/

${ldap.server.url}​

LDAP Secure Server URL (SSL) (LDAP セキュアサーバ URL (SSL))

ldaps://my-company-ldap.cloudhub.io:1010/

${ldap.server.url}​

LDAP Server User DN (LDAP サーバユーザ DN)

cn=Manager,dc=my-company,dc=com

${ldap.user.dn}​

LDAP User Password (LDAP ユーザパスワード)

somePassword

${ldap.password}​

LDAP Search Base (LDAP 検索ベース)

ou=people,dc=my-company,dc=com

${ldap.search.base}​

LDAP Search Filter (LDAP 検索条件)

(uid={0}​)

${ldap.search.filter}​

例の検索条件文字列は OpenLDAP アプリケーションに固有です。

基本認証ポリシーが適用された API への要求の作成

基本認証 - LDAP ポリシーを API に適用した後は、その API への要求には次のヘッダーを含める必要があります。

Authorization: Basic <username:password>

username:password​ の値は Base64 でエンコードされた文字列である必要があります。たとえば、Mac OS X や Linux システムでは、ユーザ名とパスワードの要件は次のように実装されます。

echo '<Client Id>:<Client Secret>' | base64

Mule Runtime Engine (Mule) はヘッダーのログイン情報を分割し、要求を LDAP サーバに検索条件と共に送信します。

LDAP は username​ と検索条件から登録済みユーザを見つけた後に、ログイン情報を検証します。有効な結果が Mule に返されます。

ldap verification

無効な要求の例を下図に示します。

ldap verification invalid

基本認証 - LDAP ポリシーは HTTP 401 状況コードをスローします。これは、認証ヘッダーが不正である、提供されていない、または無効であることを示します。

Was this article helpful?

💙 Thanks for your feedback!