LDAP コネクタ

Select

このドキュメントでは、シンプルな LDAP 拡張機能の設定例を紹介し、基本的なインストール手順と LDAP コネクタを使用した LDAP サーバへの接続手順について説明します。

Lightweight Directory Access Protocol (LDAP) は、インターネットプロトコル (IP) ネットワーク上の分散ディレクトリ (ネットワークユーザ権限情報など) のメンテナンスとアクセスを促進するために公開されている標準です。

無料で使用できるオープンソースのプロジェクトやパッケージに多くの LDAP サーバが含まれています。LDAP サーバのインストール、実行、設定の詳細については、このドキュメントでは説明しません。

前提条件

LDAP コネクタを使用するには、次のものが必要です。

  • OpenLDAP、Apache Directory、Microsoft Active Directory インスタンスのいずれかへのアクセス

  • Anypoint Studio バージョン 7.0 以上または Anypoint Design Center

LDAP コネクタを本番環境で使用するには、次のいずれかが必要です。

  • Mule を使用するための Enterprise ライセンス

  • CloudHub Starter、Professional、Enterprise のいずれかのアカウント

このドキュメントは、読者が Mule、Anypoint コネクタ、Anypoint Studio の基礎、Mule フローの要素、グローバル要素に精通していることを前提としています。

互換性

LDAP コネクタは次のものと互換性があります。

アプリケーション/サービス バージョン

Mule Runtime

4.0.0

Java

1.8.0_x 以上

Anypoint Studio

7.0 以上

コネクタのインストール

  1. Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。

  2. Anypoint Exchange で [Login (ログイン)] をクリックします。

  3. コネクタを検索して [Install (インストール)] をクリックします。

  4. 画面の指示に従ってコネクタをインストールします。

Studio の更新がある場合、右下隅にメッセージが表示されます。メッセージをクリックすると、更新をインストールできます。

LDAP コネクタのグローバル要素の設定

Mule アプリケーションで LDAP コネクタを使用するには、グローバル LDAP 設定要素を設定する必要があります。グローバル要素は、アプリケーションで必要となる任意の数の LDAP コネクタで使用できます。このコネクタは、基本設定ではサーバ側のプーリングをサポートします。これは、[Pooling (プーリング)] セクションで設定できます。

  1. キャンバスの下部にある [Global Elements (グローバル要素)] タブをクリックします。

  2. [Global Configuration Elements (グローバル設定要素)] 画面で、[Create (作成)] をクリックします。次のウィンドウが表示されます。

    [Global Element Configuration (グローバル要素設定)] ウィザード
  3. [Choose Global Type (グローバル型の選択)] ウィザードで、[Connector Configuration (コネクタ設定)] を展開し、[LDAP Configuration (LDAP 設定)] を選択し、[OK] をクリックします。次のウィンドウが表示されます。

    [Global Element Properties (グローバル要素のプロパティ)]
  4. ドロップダウンリストに表示される 2 つの設定 (1 つは基本設定用で、もう 1 つは TLS 設定用) のいずれかを選択し、プロパティを設定します。

    パラメータ 説明

    Name (名前)

    設定を参照するための名前を入力します。

    Principal DN (プリンシパル DN)

    ユーザの DN (識別名)

    Password (パスワード)

    ユーザのパスワード

    Authentication (認証)

    使用する認証メカニズムを指定します。デフォルト: Simple (シンプル)

    URL

    LDAP サーバへの接続 URL

    上の画像では、プレースホルダの値は、プロジェクトの src/main/resources フォルダにある設定ファイル mule-artifact.properties を参照します。 ログイン情報をグローバル設定プロパティに入力するか、それらの値を含む設定ファイルを参照することができます。メンテナンスをシンプルにして、プロジェクトを再利用できるようにするために、設定ファイルを使用することをお勧めします。これらの値を別個のファイルに保存しておくと、アクセスログイン情報が異なるさまざまな環境 (本番、開発、QA など) にデプロイする必要がある場合に便利です。

  5. [Advanced (詳細)] タブと [Pooling (プーリング)] タブはデフォルトエントリのままにします。[Pooling (プーリング)] タブは、[Basic configuration (基本設定)] でのみ使用できます。

  6. [Test Connection (接続をテスト)] をクリックして、グローバル設定のパラメータが正確であることと、Mule が LDAP サーバのインスタンスに正常に接続できることを確認します。

  7. [OK] をクリックして、グローバルコネクタ設定を保存します。

XML エディタまたは Standalone を使用した設定

設定ファイルに LDAP 名前空間が含まれていることを確認します。
<mule xmlns:ldap="http://www.mulesoft.org/schema/mule/ldap" xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:spring="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ldap http://www.mulesoft.org/schema/mule/ldap/current/mule-ldap.xsd">



<!-- Put your flows and configuration elements here -->
</mule>
次の設定コードを使用して、LDAP の基本設定のグローバル要素を作成します。
	<ldap:config name="LDAP_Configuration" doc:name="LDAP Configuration">
		<ldap:basic-connection authDn="${config.principal.dn}"
			authPassword="${config.password}" url="${config.url}">
			<ldap:extended-configurations>
				<ldap:extended-configuration key="java.naming.ldap.factory.socket"
					value="org.mule.extension.ldap.internal.util.BypassTrustSSLSocketFactory" />
			</ldap:extended-configurations>
		</ldap:basic-connection>
	</ldap:config>
XML ファイルに対する変更を保存します。

コネクタの使用

LDAP コネクタは次の操作をサポートしています。

操作 説明

Bind (バインド)

LDAP サーバに対して認証します。これは、各操作の前に自動的に行われますが、要求に応じて実行することもできます。

Search (検索)

指定された検索条件を使用して、ベース DN で LDAP 検索を実行します。

Search one (1 つを検索)

一意の結果を返すことが想定される LDAP 検索を実行します。

Paged result search (検索結果のページング)

LDAP 検索を実行し、結果をフローの残りの部分に流し込みます。

Lookup (参照)

一意の LDAP エントリを取得します。

Exists (存在)

LDAP エントリが LDAP サーバに存在するかどうかを確認します。

Add (追加)

新しい LDAP エントリを作成します。

Add single-valued attribute (単一値属性の追加)

特定の単一値属性を既存の LDAP エントリに追加します。

Add multi-valued attribute (複数値属性の追加)

特定の複数値属性を既存の LDAP エントリに追加します。

Modify (変更)

既存の LDAP エントリを更新します。

Modify single-valued attribute (単一値属性の変更)

既存の LDAP エントリの特定の単一値属性を更新します。

Modify multi-valued attribute (複数値属性の変更)

既存の LDAP エントリの特定の複数値属性を更新します。

Delete (削除)

既存の LDAP エントリを削除します。

Delete single-valued attribute (単一値属性の削除)

既存の LDAP エントリの特定の単一値属性を削除します。

Delete multi-valued attribute (複数値属性の削除)

既存の LDAP エントリの特定の複数値属性を削除します。

Rename (名前変更)

既存の LDAP エントリの名前を変更します。

コネクタの名前空間とスキーマ

Studio でアプリケーションを設計するときに、コネクタをパレットから Anypoint Studio キャンバスにドラッグすると、XML コードにコネクタの名前空間とスキーマの場所が自動的に入力されます。

名前空間: http://www.mulesoft.org/schema/mule/ldap

スキーマの場所: http://www.mulesoft.org/schema/mule/ldap/current/mule-ldap.xsd

Studio の XML エディタまたはその他のテキストエディタで手動でコーディングを行う場合は、これらを設定 XML の <mule> タグの内部に貼り付けてください。
<mule xmlns:ldap="http://www.mulesoft.org/schema/mule/ldap" xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:spring="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/ldap http://www.mulesoft.org/schema/mule/ldap/current/mule-ldap.xsd">

      <!-- put your global configuration elements and flows here -->

</mule>

Maven 対応の Mule アプリケーションでのコネクタの使用

Maven 対応の Mule アプリケーションをコーディングしている場合は、次のスニペットを pom.xml ファイルに含める必要があります。

<dependency>
    <groupId>org.mule.connectors</groupId>
    <artifactId>mule-ldap-connector</artifactId>
    <version>3.0.0</version>
    <classifier>mule-plugin</classifier>
</dependency>

ユースケースとデモ

LDAP コネクタの最も一般的なユースケースとデモアプリケーションウォークスルーを次に示します。

Active Directory へのユーザアカウントの追加

ビジネスユーザアカウントをベース DN で定義された Active Directory グループに追加できます。

ユーザ属性の取得

ビジネスユーザの基本属性を 1 つ以上の目的のために取得できます (メールや電話など)。

フローへの追加

  1. Anypoint Studio で新しい Mule プロジェクトを作成します。

  2. 適切な Mule インバウンドエンドポイント (HTTP リスナなど) をフローの先頭に追加します。

  3. LDAP コネクタの任意の操作 ([Add entry (エントリの追加)] 操作など) をドラッグしてキャンバスにドロップします。

  4. コネクタをクリックして、プロパティエディタを開きます。

    フローの設定
  5. 次のパラメータを設定します。

    項目 説明

    Display Name (表示名)

    アプリケーションでの LDAP 操作の一意の表示ラベルを入力します。

    Basic Settings (基本設定)

    Extension configuration (拡張機能設定)

    このコネクタにリンクされているグローバル要素に接続します。グローバル要素は、対象リソースまたはサービスへの接続に関する再利用可能なデータをカプセル化します。作成したグローバル LDAP コネクタ要素を選択します。

    General (一般)

    Entry (エントリ)

    #[payload]。これは、前のコンポーネント (通常は DataWeave コンポーネント) で作成され、このプロセッサへの入力ペイロードとして変換された LDAPEntry オブジェクトを参照します。

  6. [Structural object class (構造オブジェクトクラス)] テキスト項目の直後にある更新ボタンをクリックして、構造オブジェクトクラスに基づくメタデータを取得します。これによって、ディレクトリ情報ツリーがトラバースされ、階層とそれが継承するすべてのプロパティが取得されます。

LDAP コネクタを使用したユースケース例 1

組織の個人を組織の部署に追加または削除します。

ユーザエントリ追加フロー
  1. Anypoint Studio で新しい Mule プロジェクトを作成します。

  2. 次のプロパティを mule-artifact.properties ファイルに追加して LDAP ログイン情報を保持し、このファイルをプロジェクトの src/main/resources ディレクトリに置きます。

    config.principal.dn=<DN>
    config.password=<Password>
    config.url=<URL>
  3. [HTTP Listener (HTTP リスナ)] をキャンバスにドラッグし、次のパラメータを設定します。

    パラメータ

    Display Name (表示名)

    HTTP

    Extension configuration (拡張機能設定)

    まだ HTTP 要素が作成されていない場合は、プラス記号をクリックして新しい HTTP リスナ設定を追加し、[OK] をクリックします (値はデフォルトのままにする)。

    Path (パス)

    /

  4. 次に、DataWeave コンポーネントを使用して組織の部署エントリを作成しましょう。[DataWeave] コンポーネントを [HTTP Listener (HTTP リスナ)] の横にドラッグし、次のスクリプトを使用します。

    %dw 2.0
    output application/java
    ---
    {
    	dn : "ou=DevOpsGroup," ++ attributes.queryParams.dn,
    	ou : "DevOpsGroup",
    	objectclass : ["top", "organizationalUnit"]
    }
  5. LDAP コネクタの [Add entry (エントリの追加)] 操作を [DataWeave] コンポーネントの横にドラッグして、LDAP エントリを追加します。

  6. 新しい LDAP グローバル要素を追加することで LDAP コネクタを設定します。[Extension configuration (拡張機能設定)] 項目の横にあるプラス記号をクリックします。

    1. 以下の表に従ってグローバル要素を設定します。

      パラメータ 説明

      Name (名前)

      設定を参照するための名前を入力します。

      <Configuration_Name>

      Principal DN (プリンシパル DN)

      ユーザの DN (識別名)

      ${config.principal.dn}

      Password (パスワード)

      ユーザのパスワード

      ${config.password}

      URL

      LDAP サーバへの接続 URL

      ${config.url}

    2. 対応する XML 設定は次のようになります。

      	<ldap:config name="LDAP_Configuration" doc:name="LDAP Configuration">
      		<ldap:basic-connection authDn="${config.principal.dn}"
      			authPassword="${config.password}" url="${config.url}">
      			<ldap:extended-configurations>
      				<ldap:extended-configuration key="java.naming.ldap.factory.socket"
      					value="org.mule.extension.ldap.internal.util.BypassTrustSSLSocketFactory" />
      			</ldap:extended-configurations>
      		</ldap:basic-connection>
      	</ldap:config>
  7. [Test Connection (接続をテスト)] をクリックして、Mule が LDAP サーバインスタンスに接続できることを確認します。正常に接続できた場合は、[OK] をクリックして設定を保存します。そうでない場合は、見直して、誤ったパラメータを修正してからもう一度テストします。

  8. LDAP コネクタのプロパティエディタに戻り、エントリ追加操作に必要なパラメータを設定します。

    パラメータ

    Display Name (表示名)

    Add Group Entry to LDAP Directory (LDAP ディレクトリへのグループエントリの追加)

    Basic Settings (基本設定)

    Extension configuration (拡張機能設定)

    作成したグローバル LDAP コネクタ要素を選択します。

    General (一般)

    Entry (エントリ)

    #[payload]。デフォルト値です。

  9. 次に、DataWeave コンポーネントを使用して組織の個人エントリを作成しましょう。[DataWeave] コンポーネントを [LDAP connector (LDAP コネクタ)] の横にドラッグし、次のスクリプトを使用します。

    %dw 2.0
    output application/java
    ---
    {
    	dn : "cn=Test User,ou=DevOpsGroup," ++ attributes.queryParams.dn,
    	uid : "testUser",
    	cn : "Test User",
    	sn : "User",
    	userPassword : "test1234",
    	objectclass : ["top", "person", "organizationalPerson", "inetOrgPerson"]
    }
  10. LDAP コネクタの [Add entry (エントリの追加)] 操作を [DataWeave] コンポーネントの横にドラッグして、LDAP ユーザエントリを追加します。

  11. LDAP コネクタのプロパティエディタで、次のようにパラメータを設定します。

    パラメータ

    Display Name (表示名)

    Add User Entry to LDAP Directory (LDAP ディレクトリへのユーザエントリの追加)

    Basic Settings (基本設定)

    Extension configuration (拡張機能設定)

    作成したグローバル LDAP コネクタ要素を選択します。

    General (一般)

    Entry (エントリ)

    #[payload]。デフォルト値です。

  12. これでエントリを正常に追加できたので、LDAP コネクタを使用してエントリを削除してみましょう。

  13. LDAP コネクタの [Delete entry (エントリの削除)] 操作を [LDAP connector (LDAP コネクタ)] の横にドラッグして、LDAP ユーザエントリを削除します。

  14. LDAP コネクタのプロパティエディタで、次のようにパラメータを設定します。

    パラメータ

    Display Name (表示名)

    Delete User Entry from LDAP Directory (LDAP ディレクトリからのユーザエントリの削除)

    Basic Settings (基本設定)

    Extension configuration (拡張機能設定)

    作成したグローバル LDAP コネクタ要素を選択します。

    General (一般)

    DN

    #['cn=Test User,ou=DevOpsGroup,' ++ attributes.queryParams.dn]

  15. LDAP コネクタの [Delete entry (エントリの削除)] 操作をもう 1 つ [LDAP connector (LDAP コネクタ)] の横にドラッグして、LDAP グループエントリを削除します。

    パラメータ

    Display Name (表示名)

    Delete Group Entry from LDAP Directory (LDAP ディレクトリからのグループエントリの削除)

    Basic Settings (基本設定)

    Extension configuration (拡張機能設定)

    作成したグローバル LDAP コネクタ要素を選択します。

    General (一般)

    DN

    #['ou=DevOpsGroup,' ++ attributes.queryParams.dn]

  16. 最後に、[DataWeave] コンポーネントを [LDAP connector (LDAP コネクタ)] の横にドラッグし、ペイロードを「Flow Successfully Completed」(フロー正常完了) に設定します。

ユースケース 1 のコード

このユースケース例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを XML エディタに貼り付けます。

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:ldap="http://www.mulesoft.org/schema/mule/ldap"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ldap http://www.mulesoft.org/schema/mule/ldap/current/mule-ldap.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd">


	<http:listener-config name="HTTP_Listener_config"
		doc:name="HTTP Listener config">
		<http:listener-connection host="127.0.0.1"
			port="8081" />
	</http:listener-config>

	<ldap:config name="LDAP_Configuration" doc:name="LDAP Configuration">
		<ldap:basic-connection authDn="${config.principal.dn}"
			authPassword="${config.password}" url="${config.url}">
			<ldap:extended-configurations>
				<ldap:extended-configuration key="java.naming.ldap.factory.socket"
					value="org.mule.extension.ldap.internal.util.BypassTrustSSLSocketFactory" />
			</ldap:extended-configurations>
		</ldap:basic-connection>
	</ldap:config>

	<flow name="ldap-add-entry-flow">
		<http:listener config-ref="HTTP_Listener_config" path="/"
			doc:name="HTTP" />

		<ee:transform doc:name="DataWeave to Create DevOps Group Object">
			<ee:message>
				<ee:set-payload><![CDATA[%dw 2.0
output application/java
---
{
	dn : "ou=DevOpsGroup," ++ attributes.queryParams.dn,
	ou : "DevOpsGroup",
	objectclass : ["top", "organizationalUnit"]
}
]]></ee:set-payload>
			</ee:message>
		</ee:transform>

		<ldap:add config-ref="LDAP_Configuration" doc:name="Add Group Entry to LDAP Directory" />


		<ee:transform doc:name="DataWeave to Create User Object">
			<ee:message>
				<ee:set-payload><![CDATA[%dw 2.0
output application/java
---
{
	dn : "cn=Test User,ou=DevOpsGroup," ++ attributes.queryParams.dn,
	uid : "testUser",
	cn : "Test User",
	sn : "User",
	userPassword : "test1234",
	objectclass : ["top", "person", "organizationalPerson", "inetOrgPerson"]
}
]]></ee:set-payload>
			</ee:message>
		</ee:transform>


		<ldap:add config-ref="LDAP_Configuration" doc:name="Add User Entry to LDAP Directory" />

		<ldap:delete config-ref="LDAP_Configuration"
			dn="#['cn=Test User,ou=DevOpsGroup,' ++ attributes.queryParams.dn]"
			doc:name="Delete User Entry from LDAP Directory" />

		<ldap:delete config-ref="LDAP_Configuration"
			dn="#['ou=DevOpsGroup,' ++ attributes.queryParams.dn]" doc:name="Delete Group Entry from LDAP Directory" />

		<ee:transform doc:name="DataWeave to set Payload indicating flow completed">
			<ee:message>
				<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
	result : "Flow Successfully Completed"
}
]]></ee:set-payload>
			</ee:message>
		</ee:transform>
	</flow>


</mule>

LDAP コネクタを使用したユースケース例 2

カスタム信頼ストアを設定することで、どのサーバへの通信が許可されるかを識別できます。

そのために、拡張設定パラメータを使用してカスタム信頼ストアを指定できます。

上のユースケース 1 と同じものを使用してこれを実行できますが、LDAP コネクタの設定部分に TLS 設定を使用するということが異なります。

次の LDAP コネクタ用の XML 設定スニペットでは TLS 設定を使用しています。これを使用して上のユースケース 1 の XML ファイルを更新します。

<ldap:config name="LDAP_Configuration" doc:name="LDAP Configuration">
<ldap:tls-connection authDn="${config.principal.dn}"
                            authPassword="${config.password}" url="${config.url}">
    <ldap:extended-configurations>
        <ldap:extended-configuration key="org.mule.module.ldap.trustStorePath" value="the_path_to_trust_store_jks_file" />
        <ldap:extended-configuration key="org.mule.module.ldap.trustStorePassword" value="changeit" />
    </ldap:extended-configurations>
</ldap:tls-connection>
</ldap:config>

デモアプリケーションの実行

  1. プロジェクトを保存し、Mule アプリケーションとして実行します。

  2. Web ブラウザを開き、次の URL を入力して応答を確認します。

    http://localhost:8081/?dn=dc=mulesoft,dc=org

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub