以下の項では、SALT WS-SecurityPolicy (WSSP) 1.0アサーションのリファレンス情報を示します。
Oracle SALTでは、着信サービスに対してWS-Securityプロトコル・バージョン1.0の一部を実装しています。 UsernameTokenとX509v3Tokenによる認証がサポートされています。 WSDL定義では、認証方法を説明するにはWS-SecurityPolicy 1.0アサーションが使用されます。 Oracle WebLogic 9.xとの相互運用性のために、WS-SecuirtyPolicy1.0仕様(2002)がサポートされています。
Oracle SALTのサポート対象WS-SecurityPolicy 1.0アサーションを以下に示します。
WebLogic 9.xでいくつかの拡張アサーションが使用され、SALTはそれらのサブセットのみ実装します。 認証のためにX509v3トークンを使用する場合、整合性アサーションのみ使用されます。 署名は、SOAP本文のメッセージ部にのみ指定できます。
図F-1には、WS-PolicyファイルでのOracle SALTのサポート対象WS-SecurityPolicy 1.0アサーションの形式のグラフィカルな表現を示します。
リストF-1には、WSSP 1.0アサーションによるユーザー名トークン認証を適用する方法を示します。
<wsp:Policy xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wssp="http://www.bea.com/WLS/security/policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wssp:Identity>
<wssp:SupportedTokens>
<wssp:SecurityToken TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken">
<wssp:Claims>
<wssp:UsePassword>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText</wssp:UsePassword>
</wssp:Claims>
</wssp:SecurityToken>
</wssp:SupportedTokens>
</wssp:Identity>
</wsp:Policy>
Oracle SALTには、代表的Webサービス・アプリケーションに使用できるいくつかのWS-SecurityPolicy 1.0テンプレート・ファイルが用意されています。 これらのポリシー・ファイルはTUXDIR/udataobj/salt/policyディレクトリにあります。
これらのテンプレート・ファイルは以下の場所値の形式でWSDFファイルで直接参照することができます。
たとえば、signbodyを構成する場合は、WSDFファイルに次のsignbodyを指定することができます。
<Policy location=”salt:wssp1.0-signbody.xml” />
Oracle SALTでは、WebLogic 9.x/10 WS-SecurityPolicy 1.0アサーションの一部を実装します。 WebLogicでサポートされるWSSP 1.0アサーションのすべての一覧については、http://edocs.bea.com/wls/docs100/webserv_ref/sec_assert.htmlを参照してください。
デジタルで署名されるSOAPメッセージ要素を標準化するのに使用されるアルゴリズムを指定します。
特定のセキュリティ・トークンの型に関連付けられている追加のメタデータ情報を指定します。 セキュリティ・トークンの型によって、次の子要素を指定する必要があります。
SOAPメッセージの指定部分にデジタル署名する際に使用するダイジェスト・アルゴリズムを指定します。デジタル署名するSOAPメッセージの一部を指定するには、<MessageParts>兄弟要素を使用します。
認証のためにサポートされているセキュリティ・トークンの型(ユーザー名またはX.509)を指定します。
デジタルで署名しなければならないSOAPメッセージ全体またはその一部ならびにSOAPメッセージを署名するために使用されたアルゴリズムとキーを指定します。
たとえば、Webサービスでは、SOAPメッセージ全体がデジタルで署名され、SHA1を使用したアルゴリズムとRSAキーが受け付けられている必要がある可能性があります。
署名しなければならないSOAPメッセージの部分を指定します。 SALTでは、特定のあらかじめ定義されたメッセージ部分の関数、wsp:Body()、つまりデジタルで署名する全体のSOAP本文のみサポートします。
MessagePartsアサーションは常に<Target>アサーションの子です。<Target>アサーションは、(SOAPメッセージをデジタルで署名する方法を指定するための)整合性アサーションの子である可能性があります。
署名しなければならないSOAPメッセージの部分を指定する方法については、「MessagePartsの使用」を参照してください。
親要素によって、認証またはデジタル署名に対してサポートされているセキュリティ・トークンを指定します。
この要素を<Identity>親要素に定義すると、クライアント・アプリケーションにおいて、Webサービスを呼び出すときにSOAPリクエストにセキュリティ・トークンを添付する必要があります。たとえば、Webサービスでは、WebサービスによってTuxedoサービスにアクセスできるようにクライアント・アプリケーションがユーザー名トークンを提示する必要がある可能性があります。この要素が<Integrity>の一部である場合、デジタル署名に対して使用するトークンを指定します。
特定のセキュリティ・トークンの型は、TokenType属性の値と親要素によって決まります。
この属性のデフォルト値は、<Integrity>アサーションで使用する場合はtrueです。
この属性の値は、<Identity>アサーションで使用する場合は、明示的にfalseに設定したとしても、常にtrueです。
|
||
デジタル署名を計算するために使用された暗号書記法のアルゴリズムを指定します。
親要素によって、認証またはデジタル署名に対して使用できるサポートされているセキュリティ・トークンのリストを指定します。
SOAPメッセージの署名するターゲットについての情報をカプセル化します。<Integrity>で使用する場合は、<DigestAlgorithm>、<Transform>および<MessageParts>子要素を指定できます。
理想的に、1つまたは複数のターゲットが含めることができます。ただし、SALTにはデジタル署名に対して構成するSOAP全体のみをサポートしているので、最大で1つのターゲットが必要となります。
署名されたSOAPメッセージの部分に適用する変換アルゴリズムのURIを指定します。<Integrity>要素の子要素のみで存在できます。
0個以上の任意の数のトランスフォーメーションを指定できます。指定したトランスフォーメーションは、<Target>親要素で指定されている順序で実行されます。
これらの変換アルゴリズムの詳細は、「XML-Signature Syntax and Processing」を参照してください。
|
WS-Policyファイル内で<Integrity>アサーションを使用すると、デジタルで署名するSOAPメッセージのターゲットを指定するには、Targetの子アサーションも使用する必要があります。<Target>アサーションでは、デジタルで署名する必要があるSOAPメッセージの実際の部分を指定するために<MessageParts>子アサーションを使用する必要があります。SOAPメッセージの部分を識別するために使用する方言を指定するには、<MessageParts>のDialect
属性を使用できます。Oracle SALT Webサービスのセキュリティ・モジュールでは、次の方言のみがサポートされています。
クライアントがmessage-secured Webサービスを呼び出すようにSOAPメッセージ内に実際に存在しているメッセージ部分を指定するようにします。 Webサービスのセキュリティ・モジュールは、WS-Policyファイルによりる署名または暗号化される必要がある部分を含まれていない着信SOAPメッセージを受信すると、そのモジュールはエラーを返し、メッセージを呼び出すことに失敗します。
この項では、メッセージ部分を選択するために「http://schemas.xmlsoap.org/2002/12/wsse#part」方言で使用されたSALTのサポート対象関数を示します。
署名するSOAP全体のみ指定することができます。このためにはwsp:Body()
関数をあらかじめ定義した方言を使用することをお薦めします。
リストF-2には、wsp:Body()
関数の例を示します。
<wssp:MessageParts
Dialect="http://schemas.xmlsoap.org/2002/12/wsse#part">
wsp:Body()
</wssp:MessageParts>