Spring セキュリティの LDAP プロバイダーの設定

Mule 4 では、Spring セキュリティ LDAP プロバイダーを使用して、コンポーネントの認証を実行するか、または Spring Module 経由で Mule セキュリティプロバイダーとして使用できます。LDAP プロバイダーを設定する前に Spring JAR ファイルを入手して Spring Bean を宣言してください。

JAR ファイルの入手

Mule ソフトウェアディストリビューションの ​<distribution>/lib/opt​ ディレクトリに、必要な Spring JAR ファイルが入っています。

  • spring-ldap-core-2.3.2.RELEASE.jar

  • spring-security-config-4.2.6.RELEASE.jar

  • spring-security-core-4.2.6.RELEASE.jar

  • spring-security-ldap-4.2.6.RELEASE.jar

  • spring-security-web-4.2.6.RELEASE.jar

Spring Bean の宣言

DefaultSpringSecurityContextSource​ クラスが LDAP コンテキストを取得するためのアクセスポイントとなります。
DefaultSpringSecurityContextSource​ の Spring Bean は、resources フォルダーの個別の ​beans.xml​ ファイルで宣言する必要があります。

たとえば、ユーザーを検索して認証するために、Spring セキュリティ認証プロバイダーで使用する LDAP コンテキストソースをセットアップする必要があります。また、次のコードサンプルに示すように、​ldap-authentication-provider​ クラスが埋め込まれた ​authentication-manager​ インターフェースを定義する必要もあります。

	<beans xmlns="http://www.springframework.org/schema/beans"
	  xmlns:context="http://www.springframework.org/schema/context"
	  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	  xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	  xmlns:ss="http://www.springframework.org/schema/security"
	  xsi:schemaLocation="http://www.springframework.org/schema/beans
	  ...
	  http://www.springframework.org/schema/security/spring-security-4.2.xsd">

		<bean id="ldapContextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
	        <constructor-arg value="ldap://localhost:389"/>
	        <property name="userDn" value="cn=admin,dc=example,dc=org"/>
	        <property name="password" value="admin"/>
	    </bean>

	    <ss:authentication-manager alias="ldapAuthManager">
			<ss:ldap-authentication-provider
				server-ref="ldapContextSource"
				user-search-base="DC=example,DC=org"
				user-search-filter="(uid={0})"
				group-search-base="DC=example,DC=org"
				group-search-filter="({0})"
				group-role-attribute="ou"
			/>
	    </ss:authentication-manager>

	</beans>

Mule セキュリティプロバイダーの設定

SpringSecurityProviderAdapter​ は、​LdapAuthenticationProvider​ のような ​AuthenticationProvider​ に認証プロセスを委任します。Mule セキュリティプロバイダーを設定するには、1 つ以上のセキュリティプロバイダーを必要とする Mule のコネクタレベルのセキュリティや他のセキュリティ機能の設定方法を示した次の例を参考にしてください。

	<spring:config name="Spring_Config" files="beans.xml" />

	<spring:security-manager>
 		<spring:delegate-security-provider name="ldap-provider" delegate-ref="ldapAuthManager" />
	</spring:security-manager>

次の設定例では、基本 HTTP セキュリティ検索条件を参照しています。

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

	<spring:config name="Spring_Config"  files="beans.xml" />

	<spring:security-manager>
		<spring:delegate-security-provider name="ldap-provider" delegate-ref="ldapAuthManager" />
	</spring:security-manager>

	<flow name="secureFlow">
		<http:listener doc:name="Listener" config-ref="HTTP_Listener_config" path="/test" />

		<http:basic-security-filter doc:name="Basic security filter" securityProviders="#[['ldap-provider']]" realm="mule-realm"/>

		<ee:transform doc:name="Transform Message">
			<ee:message>
				<ee:set-payload><![CDATA[%dw 2.0
					output application/json
					---
					{
						"status": "ok"
					}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
	</flow>

コンポーネント認証の設定

コンポーネント認証を設定するには、​authorization-filter​ 項目を次のように宣言します。

	<spring:authorization-filter requiredAuthorities="ROLE_TESTERS" />