WSS API を使用してメッセージ機密性を保護するための暗号化解除方式の構成
バインディング・ファイルの応答コンシューマー (クライアント・サイド) セクションで、 暗号化解除方式情報を構成することができます。暗号化解除情報は、コンシューマー (受信側) が 着信 SOAP メッセージの暗号化解除の方法を指定するために使用されます。暗号化解除を 構成するためには、暗号化を解除するメッセージ・パーツを指定して、暗号化解除に使用する アルゴリズム方式とセキュリティー・トークンを指定します。
始める前に
機密性は暗号化に関連し、保全性はデジタル署名に関連します。 機密性は、インターネット上のメッセージ・フローが誰かに読み取られるリスクを軽減します。機密性の仕様を使用して、メッセージは、送信される前に暗号化され、 正しいターゲットによる受信時に、暗号化解除されます。 暗号化解除を構成する前に、XML 暗号化について知っておく必要があります。
このタスクについて
暗号化解除では、以下を指定する必要があります。
- 暗号化解除するメッセージ・パーツ。
- 使用する暗号化解除アルゴリズム。
クライアント・サイドで暗号化解除と暗号化解除されるパーツを構成するには、 WSSDecryption API と WSSDecryptPart API を使用するか、管理コンソールから ポリシー・セットを構成します。
WebSphere® Application Server には、バインディングのデフォルト値が用意されています。しかし、管理者は実稼働環境に合わせてデフォルトを変更する必要があります。
WebSphere Application Server では、デフォルト・コンシューマー用の 暗号化解除情報を使用して SOAP メッセージ・パーツの暗号化を解除します。 WSSDecryption API は、以下の必須パーツを暗号化解除の対象パーツとして 構成します。
暗号化解除パーツ | 説明 |
---|---|
キーワード | キーワードは、SOAP メッセージに暗号化解除パーツを追加する場合に 使用されます。 |
XPath 式 | XPath 式は、SOAP メッセージに暗号化解除パーツを追加する場合に 使用されます。 |
WSSDencryptPart オブジェクト | このオブジェクトは、SOAP メッセージに暗号化解除パーツを追加します。 |
WSSVerification オブジェクト | このオブジェクトは、シグニチャー確認コンポーネントを暗号化解除パーツとして 追加します。 |
ヘッダー | このパーツは、QName で指定される SOAP ヘッダー内のヘッダーを、 暗号化解除パーツとして追加します。 |
セキュリティー・トークン・オブジェクト | このオブジェクトは、セキュリティー・トークンを暗号化解除パーツとして追加します。 |
Web Services Security API (WSS API) は、Web Services Secure Conversation (WS-SecureConversation) が 使用されている場合に限り、共有鍵を使用して 対称暗号化をサポートします。
WSS API では、キーワードまたは XPath 式を使用することで、 SOAP メッセージの暗号化解除パーツを指定できます。WebSphere Application Server で使用できるキーワードは次のとおりです。
キーワード | 参照 |
---|---|
BODY_CONTENT | SOAP メッセージ本体の内容を 暗号化解除ターゲットにするためのキーワード。 |
SIGNATURE | シグニチャー・エレメントを 暗号化解除ターゲットにするためのキーワード。 |
USERNAME_TOKEN, | ユーザー名トークン・エレメントを 暗号化解除ターゲットにするためのキーワード。 |
WSS API を使用して構成する場合は、WSSDecryption API および WSSDecryptPart API が 以下のハイレベル手順を実行します。
手順
タスクの結果
例
WSSFactory factory = WSSFactory.getInstance();
WSSConsumingContext concont = factory.newWSSConsumingContext();
X509ConsumeCallbackHandler callbackhandler = generateCallbackHandler();
// see X509ConsumeCallbackHandler
WSSDecryption dec = factory.newWSSDecryption(X509Token.class,
callbackhandler);
concont.add(dec);
次のタスク
クライアント・サイドの要求生成プログラム (送信側) バインディングで まだ暗号化情報を構成していない場合は、同様の暗号化情報を構成する必要があります。
次に、WSSDecryption API プロセスを確認します。