Liberty: ibm-ws-bnd.xml ファイル
Liberty で ibm-ws-bnd.xml ファイルを使用して、Web サービス・エンドポイントをカスタマイズし、Web サービス・プロバイダーと Web サービス・クライアントの両方のセキュリティー設定を構成することができます。Web アプリケーションの /WEB-INF ディレクトリー、または EJB モジュールの /META-INF ディレクトリーにこのファイルを格納してください。
ibm-ws-bnd.xml ファイルでは、次のエレメント階層が提供されます。
以下に、ibm-ws-bnd.xml ファイル内の各エレメントについて説明します。
<webservice-endpoint-properties>
このエレメントを使用して、 同じモジュールにあるすべての Web サービス・エンドポイントのデフォルト・プロパティーを定義します。 1 つのモジュールに指定できる webservice-endpoint-properties エレメントは 1 つだけです。 webservice-endpoint-properties エレメントの属性として、Web サービス・エンドポイントに適用可能な任意の名前と値のペアを指定できます。
<enableLoggingInOutInterceptor> プロパティーを追加すると、クライアント・サイドとサーバー・サイドの両方の SOAP 要求および応答を記録できます。
<webservice-endpoint-properties enableLoggingInOutInterceptor="false">
注: enableLoggingInOutInterceptor="true" を設定すると、message.log に資格情報が表示されます。
<webservice-endpoint>
このエレメントを使用して、
指定したサービス・インスタンスのバインディングを指定します。
これには、以下の属性があります。
- port-component-name: この属性は必須です。ポート・コンポーネントの名前を指定するために使用します。
- address: この属性はオプションです。サービス・エンドポイントのオーバーライド・アドレスを指定するために使用します。
<enableLoggingInOutInterceptor> プロパティーを追加すると、クライアント・サイドとサーバー・サイドの両方の SOAP 要求および応答を記録できます。
<webservice-endpoint port-component-name="Hello">
<properties enableLoggingInOutInterceptor="true"/>
</webservice-endpoint>
注: enableLoggingInOutInterceptor="true" を設定すると、message.log に資格情報が表示されます。
<http-publishing>
このエレメントを使用して、
すべての Web サービス・エンドポイントに対して、HTTP プロトコルを使用する場合のパブリッシュ構成を指定します。
各モジュールに指定できる <http-publishing> エレメントは 1 つだけです。これには、以下の属性があります。
- context-root: この属性はオプションです。EJB ベースの JAX-WS アプリケーション内の EJB モジュールのコンテキスト・ルートを指定するために使用します。
<webservice-security>
このエレメントを使用して、
POJO の Web サービスおよび EJB ベースの Web サービスに対してロール・ベースの許可を構成します。
これには、以下の属性があります。
- security-constraint: この属性はオプションです。セキュリティー制約を 1 つ以上の Web リソース・コレクションと関連付けるために使用されます。 Web アプリケーションのデプロイメント記述子またはアノテーションの補完構成としてのみ機能します。
- security-role: この属性はオプションです。セキュリティー・ロールの定義を含みます。 Web アプリケーションのデプロイメント記述子またはアノテーションの補完構成としてのみ機能します。
- login-config: この属性はオプションです。認証方式とレルム名を構成するために使用されます。 JAR ファイルの EJB ベースの Web サービスに対してのみ有効です。 同じ属性がデプロイメント記述子ファイルに指定された場合は、デプロイメント記述子ファイルの値が使用されます。 この属性の値は BASIC または CLIENT_CERT でなければなりません。
<service-ref>
このエレメントを使用して、
Web サービス・クライアントの Web サービス参照構成を定義します。
これには、以下の属性があります。
- name: この属性は必須です。Web サービス参照の名前を指定するために使用します。
- component-name: この属性はオプションです。サービス参照が EJB モジュールで使用される場合に、EJB Bean 名を指定するために使用します。
- port-address: この属性はオプションです。参照される Web サービスにポートが 1 つしかない場合に、 Web サービス・ポートのアドレスを指定するために使用します。
- wsdl-location: この属性はオプションです。WSDL のオーバーライド URL を指定するために使用します。
<port>
このエレメントを使用して、Web サービス参照に関連付けられたポート構成を定義します。
1 つの service-ref エレメントの中に複数の port エレメントを定義できます。
これには、以下の属性があります。
- name: この属性は必須です。Web サービス・ポートの名前を指定するために使用します。
- namespace: この属性はオプションです。Web サービス・ポートの名前空間を指定するために使用します。 namespace 属性がある場合は、 同じ名前と名前空間のポートにバインディングが適用されます。 それ以外の場合は、同じ名前のポートにバインディングが適用されます。
- address: この属性はオプションです。Web サービス・ポートのアドレスを指定するために使用します。 指定されている場合、service-ref エレメントに定義された port-address 属性の値をオーバーライドします。
- username: この属性はオプションです。基本認証のユーザー名を指定するために使用します。
- password: この属性はオプションです。基本認証のパスワードを指定するために使用します。 パスワードはエンコードできます。
- ssl-ref: この属性はオプションです。id 属性の使用により、 server.xml ファイルで構成された ssl エレメントを参照します。 この属性は指定されないが、ssl-1.0 フィーチャーの有効化によってサーバーがトランスポート・レベル・セキュリティーをサポートする場合、サービス・クライアントは Liberty のデフォルト SSL 構成を使用します。
- key-alias: この属性はオプションです。クライアント証明書の別名を指定するために使用します。 この属性が指定されず、Web サービス・プロバイダーがクライアント証明書をサポートする場合は、 鍵ストアの最初の証明書がこの属性の値として使用されます。 この属性は、server.xml ファイルの ssl エレメントで定義された clientKeyAlias 属性をオーバーライドすることもできます。
<properties>
このエレメントを使用して、
Web サービスのエンドポイントまたはクライアントのプロパティーを定義します。
属性には、任意の名前と任意の値が可能です。
- Web サービス・クライアントには、client.ConnectionTimeout、authorization.UserName、 tlsClientParameters.disableCNcheck、およびその他の属性を指定できます。
- Web サービス・エンドポイントには、publishedEndpointUrl、 org.apache.cxf.wsdl.create.imports、およびその他の属性を指定できます。
以下の例は、ibm-ws-bnd.xml ファイルの典型的な構成を示しています。
<?xml version="1.0" encoding="UTF-8"?>
<webservices-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ws-bnd_1_0.xsd"
version="1.0">
<!-- optional Web service endpoint default properties -->
<webservice-endpoint-properties org.apache.cxf.wsdl.create.imports="true" ... />
<!-- 0 to many endpoint descriptions -->
<webservice-endpoint port-component-name="..." address="optional override address">
<!-- optional Web service endpoint properties -->
<properties publishedEndpointUrl="http://www.example.com/services/hello"
org.apache.cxf.wsdl.create.imports="false" />
</webservice-endpoint>
...
<!-- optional http publishing module overrides -->
<http-publishing context-root="optional override of module's context root">
<!-- optional web.xml fragment for security -->
<webservice-security>
<!-- SECURITY CONSTRAINTS -->
<security-constraint>
<web-resource-collection>
<web-resource-name>SayHelloServiceName</web-resource-name>
<url-pattern>/SayHelloService</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>SayHelloServiceAuth</description>
<role-name>group123</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- SECURITY CONSTRAINTS -->
<security-constraint>
<web-resource-collection>
<web-resource-name>SecuredSayHelloServiceName</web-resource-name>
<url-pattern>/Secured*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>SecuredSayHelloServiceAuth</description>
<role-name>group123</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- SECURITY ROLES -->
<security-role id="group123_id">
<role-name>group123</role-name>
</security-role>
<!-- AUTHENTICATION METHOD: Client certificate or basic authentication -->
<login-config>
<auth-method>BASIC</auth-method>
</login-config> </webservice-security>
</http-publishing>
<!-- 0 to many client refs -->
<service-ref name="services/sayHelloService"
port-address="http://productServer:productPort/context-root/SayHelloService"/>
<service-ref name="services/securedSayHelloService"
port-address="http://productServer:productPort/context-root/SecuredSayHelloService"
wsdl-location="optional override of WSDL document" />
</webservices-bnd>