メッセージ・レベルの WS-Security ポリシー・セットを構成し、Lightweight Third Party Authentication (LTPA) トークンまたは Username トークンのいずれかであるスタンドアロン・セキュリティー・トークンをバインディングすることで、Web サービスを保護することができます。
始める前に
このタスクでは、構成しているサービス・プロバイダーとクライアントが、JaxWSServicesSamples アプリケーション内にあることを想定しています。このアプリケーションの取得とインストール方法について詳しくは、サンプルへのアクセスに関する資料を参照してください。ご使用のサーバーで、以下のトレース仕様を指定して、発生する可能性のある将来の構成に関する問題をデバッグできるようにします。
*=info:com.ibm.wsspi.wssecurity.*=all:com.ibm.ws.webservices.wssecurity.*=all:
com.ibm.ws.wssecurity.*=all: com.ibm.xml.soapsec.*=all: com.ibm.ws.webservices.trace.*=all:
com.ibm.ws.websvcs.trace.*=all:com.ibm.ws.wssecurity.platform.audit.*=off:
LTPA トークンが使用されている場合は、クライアントとサービスの両方に使用されるアプリケーション・サーバー上のアプリケーション・セキュリティーを使用可能にする必要があります。
このタスクについて
このトピックでは、Username トークン または LTPA トークンの WS-Security ポリシー・セットとプロバイダーのバインディングの構成方法について説明します。単純にするため、この手順では、ポリシーからタイム・スタンプ、デジタル署名、および暗号化を削除する方法を示しています。ただし、これらの属性は、ご使用の最終構成には含めることをお勧めします。詳しくは、クライアントおよびプロバイダーのアプリケーション固有のバインディングを使用した非対称 XML デジタル署名または XML 暗号化用のポリシー・セットおよびバインディングの構成に関する資料を参照してください。
このタスクでは、デフォルト・プロバイダーの汎用バインディングが、トークンを使用するプロバイダー・アプリケーションで使用されます。呼び出し元構成が必要である場合、アプリケーション固有のバインディングがプロバイダーに追加されます。
手順
- カスタム・ポリシー・セットを作成します。
- 管理コンソールで、「サービス」>「ポリシー・セット」>「アプリケーション・ポリシー・セット」とクリックします。
- 「新規」をクリックします。
- Name = OneTokenPolicy を指定します。
- 「適用」をクリックします。
- 「ポリシー」の下で、「追加」>「WS-Security」とクリックします。
- カスタム・ポリシー・セットを編集します。
- デジタル署名、暗号化、およびタイム・スタンプを削除します。
- 管理コンソールで、「WS-Security」>「メイン・ポリシー」とクリックします。
- 「メッセージ・レベルの保護」を選択解除します。
- 「適用」をクリックします。
- UsernameToken または LTPA トークンを追加します。
- 「ポリシーの詳細 (Policy details)」で、 「要求トークン・ポリシー (Request token policies)」をクリックします。
- 「トークン・タイプの追加 (Add Token Type)」 を選択します。
- UsernameToken を使用する場合は、「UserName」を選択します。
LTPA トークンを使用する場合は、「LTPA」 を選択します。
Token
name=myToken.
- 「OK」をクリックします。
- OneTokenPolicy ポリシー・セットを使用するようにクライアントを構成します。
- 管理コンソールで、「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>「サービス・クライアントのポリシー・セットおよびバインディング」とクリックします。
- Web サービス・クライアント・リソースを選択します。
- 「ポリシー・セットの関連付け」をクリックします。
- 「OneTokenPolicy」を選択します。
- クライアントのカスタム・バインディングを作成します。
- Web サービス・リソースをもう一度選択します。
- 「バインディングの割り当て」を選択します。
- 「新規のアプリケーション固有バインディング」
をクリックして、アプリケーション固有のバインディングを作成します。
- バインディング構成の名前を指定します。 name:
oneTokenClientBinding
- 「追加」> 「WS-Security」をクリックします。
- 「メイン・メッセージ・セキュリティー・ポリシーのバインディング」パネルが表示されない場合は、「WS-Security」を選択します。
- クライアントのカスタム・バインディングを編集します。
- 「認証と保護」をクリックします。
- 識別トークン生成プログラムを編集して、識別ユーザー名を送信します。
- 「request:myToken」をクリックします。
- 「適用」をクリックします。
- 「コールバック・ハンドラー」をクリックします。User
name=(yourUserid) Password=(yourPassword)
トラブルの回避 (Avoid trouble): これは、プロバイダーのシステム上のユーザー・レジストリーで有効であるユーザー ID/パスワードです。LTPA トークンを使用している場合、ユーザー ID/パスワードは、コンシューマーとプロバイダー・レジストリーの両方で有効でなければなりません。
gotcha
- ( オプション) UsernameToken を構成している場合、以下の WS-Security カスタム・プロパティーを追加します。
*com.ibm.wsspi.wssecurity.token.username.addNonce=true
*com.ibm.wsspi.wssecurity.token.username.addTimestamp=true
これらのカスタム・プロパティーは、UsernameToken コンシューマーのデフォルト汎用バインディングで指定されているために追加されます。これらのプロパティーをここで指定しなかった場合、デフォルト・プロバイダーの汎用バインディングからこれらのプロパティーを削除するか、これらのプロパティーを含まないプロバイダーのアプリケーション固有のバインディングを作成する必要があります。
- 「OK」をクリックします。
- 「保存」をクリックします。
- OneTokenPolicy ポリシー・セットを使用するようにプロバイダーを構成します。
- 管理コンソールで、「アプリケーション」>「アプリケーション・タイプ」>「WebSphere エンタープライズ・アプリケーション」>「JaxWSServicesSamples」>「サービス・プロバイダーのポリシー・セットおよびバインディング」とクリックします。
- Web サービス・プロバイダー・リソース (OneTokenPolicy) を選択します。
- 「ポリシー・セットの関連付け」をクリックします。
- 「OneTokenPolicy」を選択します。
注: プロバイダー・アプリケーションにバインディングが付加されないので、トークン・コンシューマーのデフォルト・プロバイダーの汎用バインディングが使用されます。
- (オプション)、プロバイダーの呼び出し元構成を作成する場合は、プロバイダーのカスタム・バインディングを作成します。
- Web サービス・プロバイダー・リソースをもう一度選択します。
- 「バインディングの割り当て」を選択します。
- 「新規のアプリケーション固有バインディング」
をクリックして、アプリケーション固有のバインディングを作成します。
- バインディング構成名 oneTokenProvBinding を指定します。
- 「追加」> 「WS-Security」をクリックします。
- 「メイン・メッセージ・セキュリティー・ポリシーのバインディング」パネルが表示されない場合は、「WS-Security」を選択します。
- (オプション) 呼び出し元構成を作成する場合は、プロバイダーのカスタム・バインディングを編集します。
- 「呼び出し元」>「新規」をクリックします。Name:
myCaller.
- UsernameToken を使用している場合は、次のように入力します。
- 呼び出し元 ID ローカル部: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken
- LTPA トークンを使用している場合は、次のように入力します。
- 呼び出し元の識別ローカル名 : LTPAv2
- 呼び出し元の識別ローカル URI: http://www.ibm.com/websphere/appserver/tokentype
- 「OK」をクリックします。
- 「保存」をクリックして、構成変更を保存します。
- クライアントとプロバイダーを再始動します。
- クライアントとプロバイダーを停止します。
- クライアントとプロバイダーを再始動します。
- サービスをテストします。
- Web ブラウザーで、JaxWSServicesSamples にアクセスします。 http://localhost:9080/wssamplesei/demo
トラブルの回避 (Avoid trouble): プロファイルが同じマシン上にない場合、またはポートが 9080 でない場合は、必ず正しいホスト名とポートを指定してください。
gotcha
- 「Message Type Synchronous Echo」を選択します。
- 「SOAP 1.2 の使用 (Use SOAP 1.2)」が選択されていないことを確認します。
- メッセージを入力し、「メッセージの送信 (Send Message)」をクリックします。サンプル・アプリケーションが JAXWS==>Message で応答するはずです。
タスクの結果
JaxWSServicesSamples Web サービス・アプリケーションが、要求メッセージの UsernameToken トークンまたは LTPA トークンを生成およびコンシュームするように構成されています。