基本認証: LDAP ポリシー

ポリシー名

基本認証: LDAP

概要

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

カテゴリ

セキュリティ

使用可能な最小 Flex Gateway バージョン

v1.1.0

返される状況コード

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

概要

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

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

LDAP は上下反転した木であり、それぞれの葉にユーザー名-パスワードのペアおよび関連付けられたメタデータがあります。各レベルは木の枝のように分かれています。LDAP の詳細については、 「LDAP^ について」​を参照してください。

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

Flex Gateway のローカルモード

ローカルモードでは、宣言型の設定ファイルを使用して LDAP ポリシーを API に適用します。以下のポリシー定義とパラメーターの表を参照してください。

- policyRef:
    name: ldap-authentication-flex
  config:
    ldapServerURL: <string> // OPTIONAL, default: "ldap://127.0.0.1:389"
    ldapServerUserDn: <string> // REQUIRED
    ldapServerUserPassword: <string> // REQUIRED
    ldapSearchBase: <string> // REQUIRED
    ldapSearchFilter: <string> // OPTIONAL, default: "(uid={0})"
    ldapSearchInSubtree: <bool> // OPTIONAL, default: false
パラメーター 必須または省略可能 デフォルト値 説明

ldapServerURL

省略可能

ldap://127.0.0.1:389

LDAP サーバーへの場所のアドレスとポート

ldapServerUserDn

必須

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

ldapServerUserPassword

必須

ユーザーまたはユーザーグループのパスワード

ldapSearchBase

必須

LDAP 検索を開始する場所

ldapSearchFilter

必須

Active Directory または OpenLDAP モデルの検索条件

ldapSearchInSubtree

省略可能

false

ベース DN の下のサブツリーを調べて、ベース DN レベルを含めるかどうか。これにより、パフォーマンスが影響を受けます。それ以外の場合、1 レベルのスコープが使用され、ベース DN のすぐ下のレベルのみが調べられます。

リソースの設定例

- policyRef:
    name: ldap-authentication-flex
  config:
    dapServerURL: "ldap://localhost:369"
    ldapServerUserDn: "cn=admin,dc=example,dc=org"
    ldapServerUserPassword: "admin"
    ldapSearchBase: "dc=example,dc=org"
    ldapSearchFilter: "(uid={0})"
    ldapSearchInSubtree: true

Flex Gateway の接続モード

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 アプリケーションに固有です。

ポリシーのしくみ

基本認証 - 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

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

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

Authorization: Basic <username:password>

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

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

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

ldap verification

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

ldap verification invalid

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