Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerSpring Module v1.3
Spring Module により、Mule アプリケーションで Spring Framework を使用できます。
リリースノート: Spring Module リリースノート
Exchange: Spring Module
Anypoint Studio 7 では、デフォルト設定で Spring Module が提供されます。
[Mule Palette (Mule パレット)] で、「Spring」を検索し、Authorization Filter 操作を Studio キャンバスにドラッグします。
次の設定を追加します。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:spring="http://www.mulesoft.org/schema/mule/spring"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/spring
http://www.mulesoft.org/schema/mule/spring/current/mule-spring.xsd">
<spring:config name="springConfig" files="beans.xml" />
</mule>
beans.xml
ファイルを src/main/resources
に格納します。
Spring 設定が有効でなければなりません。beans.xml ファイルの例を次に示します。
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-4.2.xsd">
<jdbc:embedded-database id="dataSource" type="DERBY">
<jdbc:script location="classpath:db/sql/create-db.sql" />
<jdbc:script location="classpath:db/sql/insert-data.sql" />
</jdbc:embedded-database>
</beans>
アプリケーションを起動するには、Spring Module で使用する beans ファイルをエクスポートする必要があります。「リソースのエクスポート方法」を参照してください。
Anypoint Studio 7.2 以降を使用している場合、mule-artifact.json
ファイルを手動で更新する必要はありません。
Mule では、Spring bean が宣言される記述子も必要であるため、Studio 内の埋め込みパッケージャーにより、プロジェクトから取得するすべてのリソースを使用して自動的に生成されます。ただし、エクスポートする必要のあるリソースを宣言する場合、Studio によってそれらのリソースのみがパッケージ化されます。
次の例では、mule-artifact.json
で beans.xml
ファイルを宣言できるようにしています。
{
"name": "MyApp",
"minMuleVersion": "4.2.1",
"classLoaderModelLoaderDescriptor": {
"id": "mule",
"attributes": {
"exportedResources": [
"/org/mule/myapp/beans.xml"
]
}
}
}
}
次のように Spring オブジェクトを Mule 設定コンポーネントで使用することで、たとえば、Spring Bean で作成した Derby データソースを参照できます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:db="http://www.mulesoft.org/schema/mule/db"
xmlns:spring="http://www.mulesoft.org/schema/mule/spring"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/spring
http://www.mulesoft.org/schema/mule/spring/current/mule-spring.xsd
http://www.mulesoft.org/schema/mule/db
http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd">
<spring:config name="springConfig" files="beans.xml" />
<db:config name="derbyConfig" doc:name="Database Config" >
<db:derby-connection database="datasource" create="true" />
</db:config>
</mule>
Spring プロパティプレースホルダーで定義されたプロパティを Mule アプリケーション内で使用することはできません。これらは、Spring 設定ファイルでのみ使用できます。ただし、Mule で <configuration-properties/>
を使用して定義したプロパティは、Spring 設定ファイルで使用できます。
Spring Module を使用するには、実装と挿入の制限を考慮してください。
Spring オブジェクトでは、Mule API ライフサイクルメソッドを実装することはできません。
Spring オブジェクトは、Mule API サービスでは挿入できません。使用できる唯一のサービスは org.mule.runtime.api.artifact.Registry
で、Mule API 内の他のすべてのサービスへのアクセスに使用できます。この場合は、@PostConstruct
をメソッドに対して使用することで、オブジェクトを初期化して Mule API サービスを取得します。
プレーンテキストのパスワードで Spring Framework 5.x を使用している場合は、パスワード値の先頭に {noop} を付ける必要があります。たとえば、パスワード admin は {noop}admin になります。
|
Spring Module では、Spring セキュリティを Mule アプリケーションのセキュリティマネージャーとして使用できます。 Spring 設定ファイルで認証マネージャーを定義する必要があります。
<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/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-4.2.xsd">
<ss:authentication-manager alias="authenticationManager">
<ss:authentication-provider>
<ss:user-service id="userService">
<ss:user name="admin" password="admin" authorities="ROLE_ADMIN" />
<ss:user name="joe" password="secret" authorities="ROLE_ADMIN" />
<ss:user name="anon" password="anon" authorities="ROLE_ANON" />
<ss:user name="user" password="password" authorities="ROLE_ANON" />
<ss:user name="ross" password="ross" authorities="ROLE_ANON" />
<ss:user name="marie" password="marie" authorities="ROLE_ANON" />
</ss:user-service>
</ss:authentication-provider>
</ss:authentication-manager>
</beans>
Spring 認証マネージャーを活用した Mule アプリケーションのセキュリティマネージャーは、次のように定義できます。
<?xml version="1.0" encoding="UTF-8"?>
<mule
xmlns:spring="http://www.mulesoft.org/schema/mule/spring"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
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/spring
http://www.mulesoft.org/schema/mule/spring/current/mule-spring.xsd">
<spring:config name="springConfig" files="beans.xml" />
<spring:security-manager>
<spring:delegate-security-provider
name="memory-provider"
delegate-ref="authenticationManager" />
</spring:security-manager>
</mule>
Spring Module は、Mule セキュリティマネージャーを使用して認証を検証できない場合に失敗する検索条件をサポートします。
<?xml version="1.0" encoding="UTF-8"?>
<mule
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:db="http://www.mulesoft.org/schema/mule/db"
xmlns:spring="http://www.mulesoft.org/schema/mule/spring"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
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/spring
http://www.mulesoft.org/schema/mule/spring/current/mule-spring.xsd
http://www.mulesoft.org/schema/mule/db
http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/http
http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
<spring:config name="springConfig" files="beans.xml" />
<spring:security-manager>
<spring:delegate-security-provider
name="memory-provider"
delegate-ref="authenticationManager" />
</spring:security-manager>
<http:listener-config
name="HTTP_Listener_config"
doc:name="HTTP Listener config" >
<http:listener-connection
host="0.0.0.0"
port="9090" />
</http:listener-config>
<flow name="spring-exampleFlow" >
<http:listener
config-ref="HTTP_Listener_config"
path="/"
doc:name="Listener" />
<http:basic-security-filter
realm="mule" />
<spring:authorization-filter
requiredAuthorities="ROLE_ADMIN" />
</flow>
</mule>
http:basic-security-filter
は、基本認証を使用してユーザーを認証しようとします。認証に成功すると、Mule はユーザー名を取得し、Spring の authorization-filter
で使用してそのユーザーを検索し、ROLE_ADMIN 権限で要求を認証しようとします。