Security Identity Propagation サンプルの実行
Security Identity Propagation サンプルを実行するには、適切なトランスポート入力ノードを通じて、各サンプル・メッセージをメインの Security Identity Propagation メッセージ・フローに配置します。
サンプルを実行すると、以下の状態でどのようなことが生じるかを理解できます。
- WebSphere MQ からの入力メッセージにおいて、MQMD メッセージ・ヘッダーにユーザー ID トークンが含まれる。
- WebSphere MQ からの入力メッセージにおいて、メッセージ本体に一連のユーザー ID 信任状が含まれる。
- マップ ID 信任状を設定するためにメイン・フロー内の Compute ノードが使用する要求エレメントが、WebSphere MQ からの入力メッセージに含まれる。
マップ ID 信任状は、入力メッセージの MQMD ヘッダーに含まれるユーザー ID トークンに基づいています。
- HTTP からの入力要求メッセージに、ユーザー ID およびパスワード・トークンが含まれる。
ユーザー ID およびパスワード・トークンは、HTTP 基本認証ヘッダーに含まれます。
詳しくは、Security Identity Propagation サンプルについてを参照してください。
サンプルの実行時に問題を検出した場合は、
WebSphere Message Broker 資料の『サンプル実行時の問題の解決』を参照してください。
MQMD メッセージ・ヘッダーにユーザー ID トークンを含む WebSphere MQ メッセージを使用してサンプルを実行する
WebSphere MQ メッセージ内の MQMD メッセージ・ヘッダーは、ブローカー内のセキュリティー・システムに次のような情報を提供します。
- 「ユーザー ID」フィールドにある「ユーザー名」ストリング。
- 「アプリケーション名の書き込み」フィールドにある「発行者名」ストリング。
MQMD ヘッダーにユーザー ID トークンを含む WebSphere MQ メッセージを使用してサンプルを実行するには、次のようにします。
- 「ブローカー開発」ビューで、SecurityIdentitySampleFlowProject プロジェクトを展開します。
「フロー・テスト」ディレクトリーを展開し、Security_Identity_MQ_ID.mbtest をダブルクリックして、テスト・クライアントでファイルを開きます。
- 「メッセージ・フロー・テスト・イベント」のツールバーで「エンキュー」をクリックします。
XML メッセージには、メッセージ本体のエレメントが一切含まれないことに注意してください。
- 「詳細プロパティー」セクションで「ヘッダー」を展開します。選択されているメッセージ・ヘッダーが「Send Identity」であることに注意してください。テスト・クライアントで「構成」タブに切り替えて、MQ メッセージ・ヘッダー「Send Identity 」を選択すると、このヘッダーの詳細を表示できます。
ヘッダーの詳細には、「User id」として mqmdUID、「Put application name」として Test Client が含まれています。
- 「イベント」 タブで、「メッセージの送信」をクリックします。
メッセージが SECURITYIDFROMMQIN キューに書き込まれます。
- 以下の結果を参照します。
- SECURITYIDFROMMQOUT キューから結果のメッセージを取得します。
- テスト・クライアントで「デキュー」をクリックします。
- 「メッセージの取得」をクリックします。
「メッセージ」の下に出力メッセージが表示されます。
- 伝搬された ID の詳細を報告する新しいエレメントが「PropagatedIdentityReport」の下に表示されます (これは、入力メッセージから SecurityIdentityReportFlow メッセージ・フローに渡されたものです)。
- 出力メッセージ内で報告される ID は、ユーザー名 mqmdUID であることに注意してください。
MQMD にはパスワードのフィールドがないため、メッセージ内の「パスワード」フィールドはブランクになります。
ブローカーは HTTP UserAgent ヘッダー・プロパティーを設定しないため、IssuedBy は任意の値 HTTP に設定されます。
メッセージ本体に ID 信任状を含む WebSphere MQ メッセージを使用してサンプルを実行する
WebSphere MQ の MQMD が発行者およびユーザー ID トークンしか提供できない制限を克服するために、
追加の MQInput ノードが用意されています。このノードは、メッセージ本体のフィールドから一連のセキュリティー信任状をすべて抽出するように構成されています。
メッセージ本体にユーザー ID トークンを含む WebSphere MQ メッセージを使用してサンプルを実行するには、次のようにします。
- 「ブローカー開発」ビューで、SecurityIdentitySampleFlowProject プロジェクトを展開します。
「フロー・テスト」ディレクトリーを展開し、Security_Identity_MSG_ID.mbtest をダブルクリックして、テスト・クライアントでファイルを開きます。
- 「エンキュー」をクリックします。メッセージには、Body.MessageIdentity フォルダー内のエレメントが含まれることに注意してください。これは以下の ID 信任状を定義しています。
- ユーザー名: IdInMsg
- パスワード: PwdInMsg
- 発行者: InMsgIssuer
- 「詳細プロパティー」セクションで「ヘッダー」を展開します。
選択されているメッセージ・ヘッダーが「Default Header」であることに注意してください。テスト・クライアントで「構成」タブに切り替えて、MQ メッセージ・ヘッダー「Default Header」を選択すると、このヘッダーの詳細を表示できます。
「User id」 および
「Put application name」 はブランクです。
- 「イベント」 タブで、「メッセージの送信」をクリックします。
メッセージが SECURITYIDFROMMSGIN キューに書き込まれます。
- 以下の結果を参照します。
- SECURITYIDFROMMSGOUT キューから結果のメッセージを取得します。
- テスト・クライアントで「デキュー」をクリックします。
- 「メッセージの取得」をクリックします。
「メッセージ」の下に出力メッセージが表示されます。
- 入力メッセージから SecurityIdentityReportFlow メッセージ・フローで作成された本体エレメントを確認できます。
- 出力メッセージ内で報告される ID は、入力メッセージからの MessageIdentity エレメントの詳細に一致することに注意してください。発行者は伝搬されないため、発行者は任意の値 HTTP に設定されます。
マップ ID を設定する必要のある WebSphere MQ メッセージを使用してサンプルを実行する
通常、ユーザー名と発行者しか含まない WebSphere MQ メッセージを操作する場合は、
信任状に対する統合 ID マッピングを呼び出す必要があります。これにより、信任状は、サービス要求を呼び出すのに適した形式、例えば、ユーザー名とパスワードを必要とする形式にマップできます。通常、この操作を実行するには、外部の統合 ID マネージャーを呼び出します。
このサンプルでは、Compute ノードを使用して着信 ID をマップすることにより、以下のセキュリティー信任状を作成する簡単なソリューションを提供します。
- トークン・タイプがユーザー名およびパスワードである。
- ユーザー名が "小文字 (受信した ID)" + "@company.com" の形式で作成される。
- パスワードが "p_" + "小文字 (受信した ID)" + "年 (現在のタイム・スタンプ)" の形式で作成される。
メッセージの MQMD に渡されるユーザー名に基づいてマップ ID を設定する要求が WebSphere MQ 入力メッセージに含まれており、このメッセージを使用してサンプルを実行するには、次のようにします。
- 「ブローカー開発」ビューで、SecurityIdentitySampleFlowProject プロジェクトを展開します。
「フロー・テスト」ディレクトリーを展開し、Security_Identity_Mapped.mbtest をダブルクリックして、テスト・クライアントでファイルを開きます。
- 「エンキュー」をクリックします。メッセージには、Body.MapIdentity エレメントが含まれることに注意してください。
メッセージにこのエレメントが含まれていると、SecurityIdentitySampleFlow メッセージ・フローの ESQL で、マップ ID 信任状が上記のように設定されます。
- 「詳細プロパティー」セクションで「ヘッダー」を展開します。選択されているメッセージ・ヘッダーが「Send Identity」であることに注意してください。テスト・クライアントで「構成」タブに切り替えて、MQ メッセージ・ヘッダー「Send Identity 」を選択すると、このヘッダーの詳細を表示できます。
ヘッダーの詳細には、「User id」としてTESTUSER、「Put application name」として BRKTSTCLNT が含まれています。
- 「イベント」 タブで、「メッセージの送信」をクリックします。
メッセージが SECURITYIDFROMMQIN キューに書き込まれます。
- 以下の結果を参照します。
-
次のようにして、SECURITYIDFROMMQOUT キューから結果のメッセージを取得します。
- テスト・クライアントで「デキュー」をクリックします。
-
「メッセージの取得」をクリックします。
「メッセージ」の下に出力メッセージが表示されます。
入力メッセージから SecurityIdentityReportFlow メッセージ・フローで作成された本体エレメントを確認できます。
出力メッセージ内で報告される ID は、入力メッセージの MQMD で送信されたユーザー名をマップすることにより作成されたことに注意してください。
- トークン: "testuser@company.com"
- パスワード: "p_testuser2011"
発行者は伝搬されないため、発行者は任意の値 HTTP に設定されます。
HTTP 要求メッセージを使用してサンプルを実行する
HTTP トランスポートでは、ユーザー名およびパスワードなどのセキュリティー信任状を HTTP ヘッダーに入れて渡すことができます。
HTTP 基本認証ヘッダーにユーザー ID およびパスワード・トークンを含む HTTP 要求メッセージを使用してサンプルを実行するために、Java アプリケーションが用意されています。この Java アプリケーションを使用すると、ユーザー名とパスワードを含むテキスト・ファイルの内容を
サンプル・メッセージ・フローの HTTP 入力に実行依頼できます。
サンプル・プログラムには、以下の引数が含まれます。
java BasicAuthHttpPost
<URLHost> <URLPort> <URLPathSuffix> <XML file>
[<UserId> <Password> ]
ここで、引数の内容は以下のとおりです。
- <URLHost> - HTTP 要求の送信先のホスト名。
これは localhost に設定されます。
- <URLPort> - HTTP サービス・ポート。
これは、ブローカーのデフォルト 7080 になります。
- <URLPathSuffix> - HTTP URL の接尾部。
これは、/Security/IdentityFromHttp になります。
- <XML file> - HTTP 要求の本体として送信するデータを含むファイルのパス。このファイルは Messages¥Simple.xml になります。
サンプル・メッセージ・データ・ファイル Simple.xml が Message パッケージ内の Java ソースと同じプロジェクトにあるためです。
- <UserId> - HTTP 要求ヘッダーで送信されるプレーン・テキストのユーザー ID。
- <パスワード> - HTTP 要求ヘッダーで送信されるプレーン・テキストのパスワード。
HTTP 要求メッセージを使用してサンプルを実行するには、次のようにします。
- WebSphere Message Broker Toolkit で、Java パースペクティブに切り替えます。
- 「パッケージ・エクスプローラー」ビューで、SecurityIdentitySampleApplicationProject プロジェクトを展開してパッケージ com.ibm.wmb.sample.httpClient を展開します。
- com.ibm.wmb.sample.httpClient の下の HttpPostFileWithBAuth.java を右クリックし、「実行」>「実行の構成」を選択して、実行の構成ウィザードを開きます。
- 左側のツリー表示の「Java アプリケーション」をダブルクリックし、HttpPostFileWithBAuth という構成を選択します。
- 「メイン」タブで、「プロジェクト」が SecurityIdentitySampleApplicationProject に設定されていることを確認します。
- 「メイン・クラス」が com.ibm.wmb.sample.httpClient.HttpPostFileWithBAuth に設定されていることを確認します。
- 「実行」ウィザードの「引数」タブに切り替えて、「プログラムの引数」に次のように入力します。
Windows の場合:
localhost 7080 /Security/IdentityFromHttp
Messages¥Simple.xml HttpUserName HttpPassword
Linux または Unix の場合:
localhost 7080 /Security/IdentityFromHttp
Messages/Simple.xml HttpUserName HttpPassword
- これで、実行構成が作成されました。
「実行」をクリックすると、アプリケーションが始動して HTTP 要求がサンプルに送信されます。
以下の結果を参照します。
- HttpPostFileWithBAuth Java アプリケーションの出力が、「コンソール」ビューに表示されます。「コンソール」ビューに、受信した HTTP 応答が表示されるか、送受信の失敗が詳述されます。
- 表示される HTTP 応答メッセージでは、SecurityIdentityReportFlow メッセージ・フロー内で作成されたエレメントが「本体」フォルダーに入っています。
- 出力メッセージで報告される ID は HttpUserName および HttpPassword です。
これらは、引数としてテスト・アプリケーションに渡され、HTTP 要求メッセージのヘッダーで送信された値です。
これらの値の存在は、ID がブローカーから HTTP 要求を通して伝搬されたことを示しています。
サンプルのホームに戻る