ユーザーガイド > Webベースのデータソースの構成 > WSDLおよびSOAPデータソース > CARファイルからインポートされた従来のWebサービスのメッセージレベルセキュリティ(パイプライン)
 
CARファイルからインポートされた従来のWebサービスのメッセージレベルセキュリティ(パイプライン)
メッセージングがトランスポート層の中間ソースを通過する(間接メッセージング)場合は、メッセージレベルのセキュリティを定義する必要があります。間接メッセージングの場合や、メッセージの受信者または送信者が複数いる場合、データの整合性を確保するために、メッセージをさまざまなレベルで保護する必要があります。
パイプラインは、同時に処理される複数の命令を定義します。カスタムステップを除く各パイプラインステップは、サーバーの/lib/services/で利用可能なシステム組み込みプロシージャに対応しています。
メッセージパイプラインステップの表示
メッセージをファイルに記録するパイプラインステップの作成
ユーザー名トークンを追加するパイプラインステップ
要素を作成するパイプラインステップ
プロシージャを処理するパイプラインステップの作成
要素を削除するパイプラインステップの作成
要素を暗号化するパイプラインステップの作成
セキュリティヘッダーを処理するパイプラインステップの作成
ノードから環境を設定するパイプラインステップの作成
環境からノードを設定するパイプラインステップの作成
要素に署名するパイプラインステップの作成
メッセージパイプラインステップの表示
Studioを介して送信されるリクエスト/レスポンスメッセージに対して、明確に定義されたパイプライン処理の複数のステップを定義することにより、メッセージレベルのセキュリティを実現できます。具体的には、SOAPまたはWSDLデータソースの次の場所でメッセージレベルのセキュリティを提供できます。
SOAP操作
操作レベルのセキュリティ設定は、ポートのセキュリティ設定を上書きします。
WSDL操作
操作レベルのセキュリティ設定は、ポートのセキュリティ設定を上書きします。
メッセージパイプラインエディターには、次の全般的な特徴があります。
[Request Message Pipeline(リクエストメッセージパイプライン)]および[Response Message Pipeline(レスポンスメッセージパイプライン)]セクションを使用して、メッセージ処理ステップをパイプラインに追加できます。
上部の[Add(追加)]ボタンをクリックすると、リクエストメッセージパイプラインの処理に使用できるパイプラインステップのドロップダウンリストが表示されます。
[Create Element(要素の作成)]、[Custom(カスタム)]、[Delete Element(要素の削除)]、[Log Message to File(ファイルへのメッセージの記録)]、[Process Security Header(セキュリティヘッダーの処理)]、[Set Environment From Node(ノードからの環境の設定)]、[Set Node From Environment(環境からのノードの設定)]
下部の[Add(追加)]ボタンをクリックすると、使用できるレスポンスメッセージパイプラインステップのドロップダウンリストが表示されます。
[Add Username Token(ユーザー名トークンの追加)]、[Create Element(要素の作成)]、[Custom(カスタム)]、[Delete Element(要素の削除)]、[Encrypt Element(要素の暗号化)]、[Log Message to File(ファイルへのメッセージの記録)]、[Set Environment From Node(ノードからの環境の設定)]、[Set Node From Environment(環境からのノードの設定)]、[Sign Element(要素への署名)]
ステップを削除するには、[Delete(削除)]ボタンをクリックします。
ステップを追加したときに指定した内容を変更するには、[Edit(編集)]ボタンをクリックします。
ステップを選択して[Move up(上に移動)]または[Move down(下に移動)]ボタンをクリックすれば、ステップの処理順序を変更できます。
Studioで使用可能なパイプラインステップを表示するには
1.保護するWebサービスのoperationsフォルダーを開きます。
2.右側のエディターで[Message Pipeline(メッセージパイプライン)]パネルが開きます。
3.[Add(追加)]ボタンをクリックして、ドロップダウンリストでパイプラインステップを確認します。
メッセージをファイルに記録するパイプラインステップの作成
このパイプラインステップは、指定されたパスのファイルにSOAPメッセージのコンテンツを書き込みます。リクエストメッセージ、レスポンスメッセージ、またはその両方に対してこのパイプラインステップを作成します。他のパイプラインステップによる出力を、このステップで作成されたログファイルに書き込むことができます。
このパイプラインステップは、システムプロシージャLogMessageToFile (/lib/services/で利用可能)に対応しています。
メッセージをファイルに記録するパイプラインステップを作成するには
1.保護するリソースのパイプラインエディターを開きます。
2.[Request Message Pipeline(リクエストメッセージパイプライン)]または[Response Message Pipeline(レスポンスメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして、[Log Message To File(ファイルへのメッセージの記録)]を選択します。
3.[File Path(ファイルパス)]フィールドで、メッセージを記録するファイルを指定します。ファイルパスは、TDV Serverのログディレクトリーからの相対パスです。ファイルまたはディレクトリーがまだ存在しない場合は、実行時にサーバーのローカルファイルシステムに作成されます。
4.[File Mode(ファイルモード)]フィールドで、メッセージの記録方法を指定します。
[APPEND(追加)] - ログファイルの最後に新しいメッセージを追加します。
[OVERWRITE(上書き)] - 新しいメッセージでログファイルを上書きします。
5.(オプション) [Header(ヘッダー)]フィールドに入力したテキストは、新しいSOAPエンベロープメッセージの前の指定テキストに追加されます。このテキストは、メッセージコンテンツの直前にファイルに書き込まれるヘッダーノートとして機能します。この値は空にすることができます。
6.(オプション) [Footer(フッター)]フィールドに入力したテキストは、処理されたメッセージの最後に追加されます。この値は空にすることができます。
7.[Pretty Print(プリティプリント)]ドロップダウンリストで、メッセージをタブ付きインデントでフォーマットする場合は[true](デフォルト)、メッセージをフォーマットしない場合は[false]を選択します。
メッセージをフォーマットすると、読みやすくなります。
8.[OK]をクリックしてステップを保存します。
このパイプラインステップの出力は、変更されたXMLドキュメントまたは要素です。例:
 
ユーザー名トークンを追加するパイプラインステップ
このパイプラインステップを使用して、レスポンスメッセージを認証できます。Webサービスをホストしているサーバーで、メッセージにユーザー名トークンが必要な場合は、このパイプラインステップを使用します。
このパイプラインステップは、WS-Security UsernameTokenをSOAPエンベロープに追加します。UsernameTokenは、ActorおよびMust Understand引数によって識別されるSOAPヘッダーに追加されます。指定のActorMust Understandの値を持つSOAPヘッダーがSOAPメッセージに含まれていない場合、それらの値でヘッダーが作成されます。
このパイプラインステップは、システムプロシージャAddUsernameToken (/lib/services/で利用可能)に対応しています。
ユーザー名トークンを追加するパイプラインステップを作成するには
1.保護するリソースのパイプラインエディターを開きます。
2.[Request Message Pipeline(リクエストメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして、[Add Username Token(ユーザー名トークンの追加)]を選択します。
3.[Add Username Token(ユーザー名トークンの追加)]ウィンドウで、次のフィールドの値を指定する必要があります。
フィールド
値の説明
[Actor(アクター)]
ヘッダー要素の受信者を指定するために使用されるURI(Uniform Resource Identifier)を入力します。
SOAPのアクター属性を指定します。空の場合は、受信者がSOAPメッセージの最終的な宛先になります。
SOAPのアクター属性を使用して、ヘッダー要素を特定のエンドポイントにアドレス指定できます。SOAPメッセージは、メッセージパスに沿ってさまざまなエンドポイントに渡すことで送信者から受信者に送れます。SOAPメッセージのすべての部分がSOAPメッセージの最終エンドポイントを宛先としているわけではなく、メッセージパス上の1つ以上のエンドポイントを宛先としています。
http://www.w3schools.com/appml
 
 
Actor1
[Must Understand(理解が必要)]
[true]または[false]を選択します。
受信者によるヘッダーエントリーの処理が必須か任意かを示します。
ヘッダー要素の子要素に対して[Must Understand(理解が必要)]を[true]に指定した場合、ヘッダーを処理するレシーバーは要素を認識する必要があります。レシーバーが要素を認識しない場合は、ヘッダーの処理は失敗します。
ヘッダー要素の子要素に対して[Must Understand(理解が必要)]を[false]に指定した場合、ヘッダーを処理するレシーバーが要素を認識する必要はありません。
true
[Username(ユーザー名)]
Webサービスサーバーにアクセスするための有効なユーザー名。
joeuser
[Password(パスワード)]
[Username(ユーザー名)]に関連付けられている有効なパスワード。
password
[Password Type(パスワードタイプ)]
パスワードタイプを指定して、パスワードがユーザー名トークンでどのようにエンコードされるかを決定します。
[DIGEST(ダイジェスト)] - パスワードはメッセージ内でダイジェストテキストにレンダリングされます。
[TEXT(テキスト)] - パスワードはメッセージ内でクリアテキストにレンダリングされます。
DIGEST(ダイジェスト)
4.必要な情報をすべて入力したら、[OK]をクリックしてステップを保存します。
UsernameTokenが、[Actor(アクター)]フィールドと[Must Understand(理解が必要)]フィールドのエントリーによって識別されるSOAPヘッダーに追加されます。指定のActorMust Understandの値を持つSOAPヘッダーがSOAPメッセージに含まれていない場合、それらの値でヘッダーが作成されます。
次に、出力例を示します。
 
ダイジェストされたパスワードは次のようにレンダリングされます。
<wsse:Password
Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">APy0l8XZkRsJH7qiAwC6W11D+gs=</wsse:Password>
要素を作成するパイプラインステップ
このパイプラインステップは、XMLドキュメントまたは別の要素内に子要素を作成します。
このパイプラインステップは、以下で利用可能なシステムプロシージャCreateElementに対応しています。
/lib/services/
要素を作成するパイプラインステップを作成するには
1.保護するリソースのパイプラインエディターを開きます。
2.[Request Message Pipeline(リクエストメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして、[Create Element(要素の作成)]を選択します。
3.[Element Name(要素名)]フィールドで要素の完全修飾名を指定します。
この値を空にすることはできません。
4.[Element Position(要素の位置)]フィールドで要素の位置を指定します。
この位置は、要素の兄弟に関連します。デフォルト値は0(ゼロ)です。0の値は、要素が既存の子の前に作成される必要があることを示します。-1(マイナス1)の値は、既存のすべての子の後に要素を作成する必要があることを示します。
5.[Parent XPath(親XPath)]フィールドに要素の親へのパスを入力します。
[Parent XPath(親XPath)]の値は、作成する要素のルートに関連する親要素を選択するために使用されます。このエントリーを空にすることはできません。
6.[Prefix(プレフィックス)]フィールドで、[Parent XPath(親XPath)]フィールドで使用される名前空間プレフィックスを指定します。
7.[Namespace(名前空間)]フィールドで、[Parent XPath(親XPath)]式で使用される名前空間URIを指定します。
8.必要に応じて、[Declare namespaces used in XPath expressions(XPath式で使用される名前空間の宣言)]の横の[Add(追加)]ボタンをクリックして、追加のプレフィックス/名前空間ペアを定義します。
9.必要に応じて、プレフィックス/名前空間ペアの横の[Delete(削除)]ボタンをクリックしてペアを削除します。
10.[OK]をクリックします。
プロシージャを処理するパイプラインステップの作成
このパイプラインステップは、提供されたカスタムプロシージャを処理します。メッセージパイプラインに提供されるカスタムプロシージャのシグネチャは、次のルールに従う必要があります。
OUTパラメーターを含むことはできません。
INまたはINOUTパラメーターのみを含む必要があります。シグネチャに複数のINまたはINOUTパラメーターが含まれる可能性があります。
最初のパラメーターは、INまたはINOUTパラメーターとして定義できるXML型である必要があります。
この例では、システムプロシージャ/lib/debug/Logを呼び出す次のカスタムプロシージャ(CustomPipelineStep)を使用します。
PROCEDURE CustomPipelineStep(IN document XML, IN param1 INT)
BEGIN
CALL /lib/debug/Log(CAST(document AS VARCHAR(4096)));
END
最初のパラメーターは、XML型の入力パラメーターです。
カスタムのパイプラインステップを作成するには
1.保護するリソースのパイプラインエディターを開きます。
2.[Request Message Pipeline(リクエストメッセージパイプライン)]または[Response Message Pipeline(レスポンスメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして、[Custom(カスタム)]を選択します。
3.[Browse(参照)]ボタンを使用し、カスタムパイプラインプロシージャを見つけて選択します。
4.[Parameter Values(パラメーター値)]フィールドに入力パラメーター値を入力します。
5.必要に応じて、パラメーター値を選択して[Edit(編集)]をクリックし、値を変更します。
6.[OK]をクリックします。
次に、サンプルのログメッセージを示します。
要素を削除するパイプラインステップの作成
このパイプラインステップは、XMLドキュメントまたは要素から1つ以上のノードを削除します。
ここで使用する例では、MyCustomHeaderという名前のヘッダー要素(「要素を作成するパイプラインステップ」セクションで作成済み)を削除します。
このパイプラインステップは、システムプロシージャDeleteElement (/lib/services/で利用可能)に対応しています。
XMLドキュメントまたは要素から1つ以上のノードを削除するには
1.保護するリソースのパイプラインエディターを開きます。
2.[Request Message Pipeline(リクエストメッセージパイプライン)]または[Response Message Pipeline(レスポンスメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして、[Delete Element(要素の削除)]を選択します。[Parent XPath(親XPath)]フィールドに要素の親へのパスを入力します。
このパスは、削除するノードを選択するために使用されます。パスはルートノードに対して評価されます。結果のノードはすべて削除されます。このエントリーには名前空間を含めないでください。
3.必要に応じて、[Declare namespaces used in XPath expressions(XPath式で使用される名前空間の宣言)]の横の[Add(追加)]ボタンをクリックして、追加のプレフィックス/名前空間ペアを定義します。
4.必要に応じて、プレフィックス/名前空間ペアの横の[Delete(削除)]ボタンをクリックしてペアを削除します。
5.[Prefix(プレフィックス)]フィールドで、[XPath]フィールドで使用される名前空間プレフィックスを指定します。
6.[Namespace(名前空間)]フィールドで、[XPath]フィールドで使用される名前空間URIを指定します。
7.[OK]をクリックしてステップを保存します。
要素を暗号化するパイプラインステップの作成
このパイプラインステップは、証明書または公開鍵で暗号化された対称鍵を使用して、指定のSOAPエンベロープ内のBODY要素を暗号化するために使用されます。
このパイプラインステップは、システムプロシージャEncryptElement (/lib/services/で利用可能)に対応しています。
要素を暗号化するパイプラインステップを作成するには
1.保護するリソースのパイプラインエディターを開きます。
2.[Response Message Pipeline(レスポンスメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして、[Encrypt Element(要素の暗号化)]を選択します。
 
UI要素
説明
[Procedure path(プロシージャパス)]
パイプラインステッププロシージャへのパス(デフォルトでは/lib/services/EncryptElement)。
[Actor(アクター)]
[Must Understand(理解が必要)]
[true]または[false]を選択します。
[Element Name(要素名)]
[Element Name(要素名)]フィールドのデフォルト値は、暗号化されるSOAPメッセージのスキーマを指定します。このプロシージャを使用すると、SOAPメッセージ本文を暗号化できます。
[Element Name(要素名)]フィールドは空にすることができますが、デフォルト値は次のとおりです。
{http://schemas.xmlsoap.org/soap/envelope/}Body
メッセージ本文の暗号化を指定するために使用されます。
{http://schemas.xmlsoap.org/soap/envelope/}Body
[Encryption Algorithm(暗号化アルゴリズム)]
デフォルトのアルゴリズムAES_128を使用するか、サーバーのJVMに無制限のJava Cryptography Extension(JCE)ポリシーファイルをインストールしている場合は別のアルゴリズムを選択します。
暗号化の方法を決定します。ほとんどの場合は、デフォルト値のAES_128で問題ありません。AES_192やAES_256などの強力な暗号化アルゴリズムを使用するには、無制限のJava Cryptography Extension(JCE)ポリシーファイルをサーバーのJVMにインストールする必要があります。
[Certificate Alias(証明書エイリアス)]
適切な証明書エイリアスを選択または入力します。
WSDLデータソースまたはWebサービスに証明書のリストが関連付けられている場合、それらの証明書のエイリアスがここに一覧表示されます。
要素を暗号化するための対称鍵の暗号化に使用される、キーストア内の証明書または公開鍵のエイリアス。空にすることはできません。
証明書は、データソース接続プロパティを使用してデータソースに関連付けられます。証明書にアクセスするには、WSDLデータソースのエディターを開いて[Connection Information(接続情報)]セクションの[Advanced(詳細)]タブをクリックします。[Certificates(証明書)]テーブルに表示されるいずれかのエイリアスをパイプラインステップの証明書エイリアスとして使用できます。
3.必要な値をすべて入力して[OK]をクリックします。
セキュリティヘッダーを処理するパイプラインステップの作成
このパイプラインステップは、SOAPエンベロープ内のWS SecurityのSOAPヘッダーを次のように処理します。
アクターが指定されたWS Securityヘッダーがエンベロープに含まれている場合は、そのヘッダーが処理されます。
ヘッダー内のすべてのセキュリティ要素が評価されます。
いずれかのヘッダーセキュリティ要素が、エンベロープに署名済みの要素が含まれていることを示している場合、それらの署名が検証されます。
いずれかのヘッダーセキュリティ要素が、エンベロープに暗号化された要素が含まれていることを示している場合、それらの暗号化済み要素が復号化されます。
このパイプラインステップは、システムプロシージャProcessSecurityHeader (/lib/services/で利用可能)に対応しています。
セキュリティヘッダーを処理するパイプラインステップを作成するには
1.保護するリソースのパイプラインエディターを開きます。
2.[Request Message Pipeline(リクエストメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして、[Process Security Header(セキュリティヘッダーの処理)]を選択します。
3.パイプラインステッププロシージャへのパスを指定します(/lib/services/ProcessSecurityHeader以外の場合)。
4.必要に応じて、[Actor(アクター)]フィールドの値を指定します。
[Actor(アクター)]によって、処理するWS Securityヘッダーが決まります。空にすることができます。
5.[OK]をクリックしてステップを保存します。
ノードから環境を設定するパイプラインステップの作成
このパイプラインステップは、要素または属性値を環境変数として保存します。指定されたxpath式をエンベロープに対して評価し、その結果を指定された名前の環境変数に格納します。xpath式の結果は、単一の文字列として解釈されます。
このパイプラインステップは、システムプロシージャSetEnvironmentFromNodeValue (/lib/services/で利用可能)に対応しています。
ノードから環境を設定するパイプラインステップを作成するには
1.保護するリソースのパイプラインエディターで、[Request Message Pipeline(リクエストメッセージパイプライン)]または[Response Message Pipeline(レスポンスメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして、[Set Environment From Node(ノードからの環境の設定)]を選択します。
2.[Procedure Path(プロシージャパス)]フィールドにパスとステップ名を入力します(/lib/services/SetEnvironmentFromNodeValue以外の場合)。
3.[XPath]フィールドにXPath値を入力します。
[XPath]のエントリーは、[Variable Name(変数名)]フィールドで指定した変数名に格納されているテキストに対して評価されます。
4.[Variable Name(変数名)]フィールドに変数名(名前文字列にスペースを含まない)を入力します。
変数名は環境変数の名前です。任意の文字列であり、大文字と小文字は区別されません(sampleSAMPLEは同じものと見なされます)。
5.[Prefix(プレフィックス)]フィールドで、[XPath]フィールドで使用される名前空間プレフィックスを指定します。
6.[Namespace(名前空間)]フィールドで、[XPath]式で使用される名前空間URIを指定します。
7.必要に応じて、[Declare namespaces used in XPath expressions(XPath式で使用される名前空間の宣言)]の横の[Add(追加)]ボタンをクリックして、追加のプレフィックス/名前空間ペアを定義します。
8.必要に応じて、プレフィックス/名前空間ペアの横の[Delete(削除)]ボタンをクリックしてペアを削除します。
9.[OK]をクリックします。
環境からノードを設定するパイプラインステップの作成
このパイプラインステップは、環境変数から要素または属性値を設定します。指定したxpath式を使用して、エンベロープからノードが選択されます。次に、ノード値が指定の環境変数の値に設定されます。
このパイプラインステップは、システムプロシージャSetNodeValueFromEnvironment (/lib/services/で利用可能)に対応しています。
環境からノードを設定するパイプラインステップを作成するには
1.保護するリソースのパイプラインエディターで、[Request Message Pipeline(リクエストメッセージパイプライン)]または[Response Message Pipeline(レスポンスメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして、[Set Node From Environment(環境からのノードの設定)]を選択します。
2.[Procedure Path(プロシージャパス)]フィールドにパスとステップ名を入力します(/lib/services/SetNodeValueFromEnvironment以外の場合)。
3.[XPath]フィールドにXPath値を入力します。
XPath式は要素に対して評価されます。
4.[Variable Name(変数名)]フィールドに環境変数の名前(名前文字列にスペースを含まない)を入力します。
変数名は任意の文字列であり、大文字と小文字は区別されません(sampleSAMPLEは同じものと見なされます)。
5.[Attribute Name(属性名)]フィールドで、環境変数から値を設定する属性を指定します。
6.[Prefix(プレフィックス)]フィールドで、[XPath]フィールドで使用される名前空間プレフィックスを指定します。
7.[Namespace(名前空間)]フィールドで、[XPath]式で使用される名前空間URIを指定します。
8.必要に応じて、[Declare namespaces used in XPath expressions(XPath式で使用される名前空間の宣言)]の横の[Add(追加)]ボタンをクリックして、追加のプレフィックス/名前空間ペアを定義します。
9.必要に応じて、プレフィックス/名前空間ペアの横の[Delete(削除)]ボタンをクリックしてペアを削除します。
10.[OK]をクリックしてステップを保存します。
要素に署名するパイプラインステップの作成
このパイプラインステップは、要素を暗号化するパイプラインステップの簡略版です。秘密鍵を使用して指定のSOAPエンベロープ内の要素に署名するために使われます。
このパイプラインステップは、システムプロシージャSignElement (/lib/services/で利用可能)に対応しています。
要素に署名するパイプラインステップを作成するには
1.保護するリソースのパイプラインエディターで、[Response Message Pipeline(レスポンスメッセージパイプライン)]セクションの[Add(追加)]ボタンをクリックして[Sign Element(要素への署名)]を選択します。
2.[Procedure Path(プロシージャパス)]フィールドにパスとステップ名を入力します(/lib/services/SignElement以外の場合)。
3.[Actor(アクター)]、[Must Understand(理解が必要)]、[Element Name(要素名)]、および[Certificate Alias(証明書エイリアス)]の詳細については、「要素を暗号化するパイプラインステップを作成するには」を参照してください。
4.必要な値をすべて入力して[OK]をクリックします。