Security Policy Enforcement Point (PEP) サンプルは、セキュリティー・ポリシー強化点 (PEP) をメッセージ・フローでポリシー強化点として使用する方法を示します。
このサンプルでは、メッセージで渡される ID 情報は、セキュリティー・ポリシー強化点 (PEP) によって、セキュリティー操作を強制するために使用されます。 例えば、WS-Trust v1.3 セキュリティー・プロバイダー (TFIM v6.2 など) を使用する認証、許可、マッピングなどです。セキュリティー実装は、外部の集中セキュリティー・プロバイダー (TFIM v6.2 など) に基づいているので、このサンプルには、いくつかの基本的なセキュリティー操作をエミュレートする追加のメッセージ・フローが用意されています。
このサンプルで使用する外部の集中セキュリティー・プロバイダーとして TFIM v6.2 をセットアップする方法を詳しく説明した資料も用意されています。『Security Policy Enforcement Point (PEP) サンプルの拡張』を参照してください。
このサンプルでは、以下のタスクを実行する方法を示します。
このサンプルでは、以下のシナリオを取り上げます。
メッセージ・フローのセキュリティーに関連した概念の詳細については、WebSphere Message Broker の資料の『 メッセージ・フローのセキュリティーの概要』を参照してください。
Security Policy Enforcement Point (PEP) サンプルの主なメッセージ・フロー (SecurityPEPNodeSampleApplicationProject メッセージ・ブローカー・プロジェクトの SecurityPEPNodeSampleFlow.msgflow) を以下の図に示します。このフローには、1 つの HTTPInput ノードと、セキュリティー操作を呼び出す 2 つの SecurityPEP ノードが含まれています。さらに、HTTPRequest ノードも使用して、SAML 2.0 で保護した Web サービスを呼び出します。
HTTP_ID HTTPInput ノードは、入力メッセージで渡される ID を抽出します。HTTPInput ノードは、メッセージ内の ID を形成するユーザー名とパスワードの場所を構成済みのセキュリティー・プロパティーから判別します。SecurityPEPNodeSample.bar ブローカー・アーカイブ (BAR) ファイルの HTTPInput ノードでは、セキュリティー・プロファイルとして PEPSAMPLE_HTTP_UPA1_EMUL が構成されています。そのセキュリティー・プロファイルでは、STS エミュレーションを呼び出して ID を認証するように、authentication 値と authenticationConfig 値が設定されています。そのノードでユーザー名とパスワードの ID トークンの認証が失敗した場合は、例外リストが Failure ターミナルに送信されます。認証が正常に行われると、メッセージは、次の GetAuthenticationType ノードに送信されます。
GetAuthenticationType Compute ノードは、入力メッセージの内容から DemonstrateTokenType フィールドを取り出して、該当する宛先に送付します。DemonstrateTokenType フィールドの値は、UP または SAML のいずれかになります。そのどちらでもない場合は、ユーザー例外が生成されます。
PEP_UP_A1A2 SecurityPEP ノードは、入力メッセージに含まれているユーザー名とパスワードの ID を抽出し、そのメッセージ内の ID の場所を SecurityPEP ノードが構成済みのセキュリティー・プロパティーに基づいて判別できることを示します。SecurityPEPNodeSample.bar ブローカー・アーカイブ (BAR) ファイルの PEP ノードでは、セキュリティー・プロファイルとして PEPSAMPLE_PEP_UPA1A2_EMUL が構成されています。そのセキュリティー・プロファイルでは、STS エミュレーションを呼び出して ID の認証と許可の両方を実行するように、authentication、authenticationConfig、authorization、authenticationConfig の各値が設定されています。UP トークンの認証と許可が成功すると、メッセージが Compute ノードに送信されます。そのノードでは、セキュリティー操作の状況がメッセージ本体で更新され、応答が返されます。
PEP_MAP_UP->SAML2.0 SecurityPEP ノードは、入力メッセージで渡される ID を再利用して、プロパティー・ツリーのセキュリティー・フィールドに書き込みます。構成済みのセキュリティー・プロパティーが「現在のトークン」に設定されていると、SecurityPEP ノードは、現在の ID を使用します。SecurityPEPNodeSample.bar BAR ファイルの PEP ノードでは、セキュリティー・プロファイルとして PEPSAMPLE_PEP_MAPUP2SAML2.0_EMUL が構成されています。そのセキュリティー・プロファイルでは、STS エミュレーションを呼び出して、ユーザー名とパスワードから SAML 2.0 コンテンツへのトークン交換を実行するように、mapping 値と mappingConfig 値が設定されています。対応する SAML トークンは、メッセージ本体に書き込まれるので、"HTTP Request-SAMLA1" HTTPRequest ノードを経由してそのトークンをサービスに転送する処理が可能になります。その HTTPRequest ノードは、SecurityPEPNodeReportFlow.msgflow メッセージ・フローを呼び出すように構成されています。
SecurityPEPNodeSampleFlow.msgflow メッセージ・フローの HTTPRequest ノードから呼び出される HTTP サービスを以下の SecurityPEPNodeReportFlow.msgflow の図に示します。
このフローの SecurityPEP ノードは、入力メッセージのメッセージ本体に含まれている SAML2.0 を抽出し、セキュリティー・プロバイダーを呼び出してその SAML2.0 を検証します。SecurityPEPNodeSample.bar BAR ファイルの PEP ノードでは、セキュリティー・プロファイルとして PEPSAMPLE_HTTP_SAMLA1_EMUL が構成されています。そのセキュリティー・プロファイルでは、STS エミュレーションを呼び出して SAML コンテンツを検証するように、authentication 値と authenticationConfig 値が設定されています。SAML2.0 コンテンツの検証が成功すると、メッセージが Compute ノードに送信されます。そのノードでは、セキュリティー操作の状況がメッセージ本体で更新され、応答が返されます。
このサンプルは、SecurityPEPNodeSampleSTSEmulatorFlow.msgflow メッセージ・フローを使用して、外部のプロバイダーが実行するセキュリティー操作をエミュレートします。以下の図を参照してください。
このフローに含まれている "HTTP WS Request" HTTPInput ノードは、 SecurityPEPNodeSampleFlow.msgflow メッセージ・フローの HTTPInput ノードと SecurityPEP ノードがセキュリティー操作を呼び出したときに、 ブローカー・セキュリティー・マネージャーから送られてくる WS-Trust 要求を受け取ります。このフローに含まれているいくつかの Compute ノードは、セキュリティー・プロバイダーの結果をエミュレートし、WS-Trust 応答を準備します。
注: エミュレーションでは、実行のたびに同じ WS-Trust 応答を生成する固定データを使用します。SAML トークンの場合は、日付が動的に変更されることはありません。例えば、IssueInstant="2010-04-14T07:10:53Z"、NotBefore="2010-04-14T07:00:53Z"、NotOnOrAfter="2010-04-15T07:10:53Z" のようになります。これらの日付および SAML の内容の有効期間がエミュレーションによって確認されることはありません。
Security Policy Enforcement Point (PEP) サンプルを実行するために、次の 3 つの入力メッセージが用意されています。
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <MessageIdentity> <Username>broker01</Username> <Password>passw0rd01</Password> <IssuedBy>Issuer1</IssuedBy> <DemonstrateTokenType>SAML</DemonstrateTokenType> </MessageIdentity> </Body> </Envelope>
このメッセージは、以下のファイルで用意されています。
.xml ファイルは、SecurityPEPNodeSampleApplicationProject/SampleTestMessages/TestMessage_UPA1_MAP2SAML2.0_A1.xml サブフォルダーにあります。
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <MessageIdentity> <Username>broker01</Username> <Password>passw0rd01</Password> <IssuedBy>Issuer1</IssuedBy> <DemonstrateTokenType>UP</DemonstrateTokenType> </MessageIdentity> </Body> </Envelope>
このメッセージは、以下のファイルで用意されています。
.xml ファイルは、SecurityPEPNodeSampleApplicationProject/SampleTestMessages/TestMessge_UP_A1A2.xml サブフォルダーにあります。
<?xml version="1.0" encoding="UTF-8"?> <Envelope> <Body> <MessageIdentity> <Username>dummy_usr</Username> <Password>passw0rd01</Password> <IssuedBy>Issuer1</IssuedBy> <DemonstrateTokenType>UP</DemonstrateTokenType> </MessageIdentity> </Body> </Envelope>
このメッセージは、以下のファイルで用意されています。
.xml ファイルは、SecurityPEPNodeSampleApplicationProject/SampleTestMessages/TestMessage_UP_A1_failure.xml サブフォルダーにあります。