Oracle® Fusion Middleware Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理 12c (12.1.2) E47994-03 |
|
![]() 前 |
![]() 次 |
OWSMはWeb Services Trust (WS-Trust 1.3)およびWeb Services Secure Conversation (WS-SecureConversation 1.3)仕様を実装します。これらはともにWebサービスとそのクライアント間のセキュアな通信を提供します。WS-SecureConversationを使用すると、Webサービスのパフォーマンスとセキュリティを向上できます。
Web Services Secure Conversation Language (WS-SecureConversation)仕様(http://docs.oasis-open.org/ws-sx/ws-secureconversation/v1.4/os/ws-secureconversation-1.4-spec-os.doc
)は、Web Services Security (WS-Security) 1.1と1.0およびWeb Services Trust Language (WS-Trust)で構築する拡張を定義し、1つ以上のメッセージを介してセキュアな通信を提供します。特に、この仕様はセキュリティ・コンテキストを確立および共有し、確立されたセキュリティ・コンテキスト(または共有シークレット)からキーを取得するメカニズムを定義します。
WS-SecureConversationの特に重要な用途は、『Oracle Web Services Managerの理解』のWS-ReliableMessagingとWS-SecureConversationの使用に関する項で説明するように、WS-ReliableMessaging (WS-RM)ポリシーのセキュリティを提供することです。WS-SecureConversationポリシーとWS-RMポリシーの両方をアタッチすると、WS-RMポリシーはセキュア通信の使用による利点を得て、シーケンス攻撃を回避できます。
WS-RMポリシーを使用して、または使用しないで、非同期WebサービスにWS-SecureConversationポリシーをアタッチすることもできます。次の組合せが可能です。
WS-RMポリシーおよびWS-SecureConversationポリシー
非同期Webサービス、WS-RMポリシーおよびWS-SecureConversationポリシー
セキュア通信およびそれを使用する必要がある場合の詳細は、『Oracle Web Services Managerの理解』のセキュア通信の概要に関する項を参照してください。
この章の構成は、次のとおりです。
多くの場合、ポリシーの作成とセキュア通信の有効化以外にWS-SecureConversation固有の構成を実行する必要はありません。「WS-SecureConversationをサポートするポリシー」で説明される事前定義済WS-SecureConversationポリシーを使用する場合は、WS-SecureConversationがすでに有効になっています。必要とされる他の構成のすべてがWS-SecureConversationを使用しないポリシーと同じです。
WS-SecureConversationを構成する場合、Webサービスおよびクライアント・ポリシーの両方に対して構成する必要があります。これは、OWSMクライアントおよびサーバー・エージェントがハンドシェイク・プロセスに参加し、通信を保護するために使用されるSecurity Context Token (SCT)を確立するためです。OWSMクライアントはRST (リクエスト・セキュリティ・トークン)をサービスに送信し、その後そのサービスがSCTを含むRSTR (リクエスト・セキュリティ・トークン・レスポンス)を返します。
「S-SecureConversationをサポートするポリシー」で説明されるOWSMセキュリティ・ポリシーには、そのポリシーのWS-SecureConversationを有効化および構成することが可能な構成設定が含まれています。これらの事前定義済ポリシーを使用するとセキュリティ・タスクを簡単に表示および管理できるようになることがわかります。
また、多数の事前定義済アサーション・テンプレートに基づいたポリシーはWS-SecureConversationもサポートしています。詳細は、第19章「事前定義済アサーション・テンプレート」を参照してください。
WS-SecureConversationを構成する手順は次のとおりです。
「Fusion Middleware Controlを使用したドメインのセキュア通信の構成」の説明に従って、ドメイン・レベルでWS-Secure通信を構成します。デフォルトでニーズが満たさない場合のみこれを実行する必要があります。
コンテンツ・ペインで、「WebLogicドメイン」→「Webサービス」→「ポリシー」の順にクリックします。
「S-SecureConversationをサポートするポリシー」のリストから事前構成済WS-SecureConversationポリシーのいずれか、またはWS-SecureConversationを有効にする別のセキュリティ・ポリシーを選択して、コピーを作成します。
事前定義済WS-SecureConversationポリシーのいずれかを選択した場合は、ポリシーをアタッチする最後の手順はスキップしてください。
事前定義済WS-SecureConversationポリシーのいずれも選択しなかった場合は、ポリシーのコピーを編集してください。
ページの「セキュア通信」セクションにスクロールします。
事前定義済WS-SecureConversationポリシーの場合、セキュアな通信がデフォルトで有効になっています。図11-1に示すように、他のすべてのポリシーに対して、セキュアな通信がデフォルトで無効になっています。
デフォルト設定を変更せずにこのポリシーのセキュア通信を単純に有効化する場合は、「有効」→「保存」の順にクリックして変更を完了します。
再認証を使用するタイミングに関する項で説明されるように、propagate.identity.context
構成属性をTrueに設定する場合、SAML送信者保証ポリシーに対してのみコントロールを再認証できます。
追加の変更を行う必要がある場合は、「セキュア通信の構成: 詳細管理」に進んでください。
このポリシーがまだWebサービスにアタッチされていない場合は、第4章「ポリシーのアタッチ」の説明に従ってアタッチしてください。
WLSTを使用してWS-SecureConversationを構成する手順は次のとおりです。
Oracle Fusion Middlewareを使用したWebサービスの管理のWebサービスのカスタムWLSTコマンドへのアクセスに関する項の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。
「WLSTを使用したポリシーを直接アタッチする」で説明するように、beginWSMSession
コマンドを使用してセッションを開始します。例:
wls:/wls_domain/serverConfig> beginWSMSession()
Session started for modification.
使用するポリシー・サブジェクトを選択します。「WLSTを使用したポリシー・サブジェクトの識別と選択」を参照してください。
「WLSTを使用したポリシーを直接アタッチする」で説明するように、attachWSMPolicy
コマンドを使用して、Webサービス・ポートにセキュア通信ポリシーのコピーをアタッチします。例:
wls:/wls_domain/serverConfig> attachWSMPolicy('oracle/wss_username_token_over_ssl_wssc_client_policy')
Policy reference "oracle/wss_username_token_over_ssl_wssc_client_policy" added.
「WLSTを使用した直接アタッチされたサービス・ポリシーの構成プロパティのオーバーライド」で説明されているように、setWSMPolicyOverride
コマンドを使用して、ポリシー・プロパティをオーバーライドします。
setWSMPolicyOverride(policyURI,property, value)
commitWSMSession()
コマンドを使用して、リポジトリに対して、現在のリポジトリ・セッションのコンテンツの書込みを行います。
WLSTコマンドおよびその引数の詳細は、『WebLogic Server WLSTコマンド・リファレンス』のWebサービスのカスタムWLSTコマンドに関する項を参照してください。
『Oracle Web Services Managerの理解』の基本モードと拡張モードの使用に関する項で説明されるように、セキュア通信ポリシーには実際には2つのポリシー(内部および外部)があります。
注意: 内部および外部ポリシーを公開するブートストラップ・メッセージ・セキュリティ制御はSSLベースのポリシーには適用されません。 |
ブートストラップ(内部)ポリシーは、トークンを取得し、クライアントとWebサービス間のハンドシェークを確立するために使用されます。外部ポリシーは、トークンを使用してリクエストする際のアプリケーション・メッセージに使用されます。
外部ポリシーのメッセージ・セキュリティ設定は、oracle/wss11_username_with_message_protection
などの元のOWSM WS-Securityポリシーから取得されます。内部ポリシーのメッセージ・セキュリティ設定は、外部ポリシーから導出されます。
多くの場合、内部および外部ポリシーの詳細に関心を持つ必要はないが、OWSM WS-SecureConversation実装により追加の制御を提供する詳細設定が提供されます。たとえば、署名の暗号化を外部ポリシーとは異なるものにできます。
拡張モードを構成する手順は次のとおりです。
ナビゲータ・ペインで「WebLogicドメイン」を開き、WS-SecureConversationの構成が必要なドメインを表示します。ドメインを選択します。
コンテンツ・ペインで、「WebLogicドメイン」→「Webサービス」→「ポリシー」の順にクリックします。
「S-SecureConversationをサポートするポリシー」のリストから事前構成済WS-SecureConversationポリシーのいずれか、またはWS-SecureConversationを有効にする別のセキュリティ・ポリシーを選択して、コピーを作成します。
コピーを編集します。
ページの「セキュア通信」セクションにスクロールします。
事前定義済WS-SecureConversationポリシーの場合、セキュアな通信がデフォルトで有効になっています。図11-2に示すように、他のすべてのポリシーに対して、セキュアな通信がデフォルトで無効になっています。
「有効」をクリックします。
再認証を使用するタイミングに関する項で説明されるように、propagate.identity.context
構成属性をTrueに設定する場合、SAML送信者保証ポリシーに対してのみコントロールを再認証できます。
「ビュー・モード」から「詳細」を選択して、追加のWS-SecureConversation設定を表示します。図11-2に表示される設定が使用できます。
次の拡張オプションを使用できます。
クライアント・エントロピ: これは要求された証明トークンの鍵の内容として使用されます。
サーバー・エントロピ: これは要求された証明トークンの鍵の内容として使用されます。
導出キー: 複数のリクエスト間で同じSCTを使用するのではなく、SCTから導出された異なる鍵が各リクエストで使用され、これにより、セキュリティ全体が改善されます。
ブートストラップ・メッセージ・セキュリティ: (SSLポリシーには適用されません。)
アプリケーション設定から継承
独立した設定を使用。選択された場合、「アルゴリズム・スイート」、「署名の暗号化」、「署名の確認」および「タイムスタンプを含める」のオプションが使用できます。
必要に応じてポリシーを編集します。
「保存」をクリックして変更を完了します。
このポリシーがまだWebサービスにアタッチされていない場合は、第4章「ポリシーのアタッチ」の説明に従ってアタッチしてください。
「設計時におけるWebサービスおよびクライアントへのポリシーのアタッチ」の手順に従って、注釈APIを使用して設計時にWS-SecureConversationポリシーをアタッチできます。
例11-1および例11-2の例を見てください。これはoracle/wss11_username_token_with_message_protection_wssc_service_policy
ポリシーを単独で、およびポリシー・セットでアタッチします。
『Oracle Web Services Managerの理解』の永続性に関する項で説明されるように、各クライアントおよびWebサービスは、1つ以上の(ポートごとに)永続性プロバイダを指定できます。永続性プロバイダにはCoherenceプロバイダまたはメモリー内プロバイダのいずれかを指定できます。
注意: Oracle Infrastructure Webサービスおよびクライアントに対してのみ永続性を構成できます。WS-SecureConversationポリシーをアタッチするWebLogic (Java EE) Webサービスの場合、デフォルトの永続性構成が有効になっています。 |
Coherence永続性プロバイダは、Webサービス・クライアントおよびWebサービス・ポリシーの両方に対して、WebLogic Serverで実行される場合はデフォルトです。それ以外の場合は、メモリー内永続性プロバイダがデフォルトです。
次の構成ルールが適用されます。
デフォルトで、クライアントがWebLogic Serverで実行している場合はCoherenceプロバイダを使用し、それ以外の場合は、メモリー内プロバイダを使用します。WebLogic Serverにデプロイされる場合、WebサービスはCoherenceプロバイダを使用します。それ以外の場合は、メモリー内プロバイダを使用します。
サービス品質要件で示すように、Webサービスに対してある永続性メカニズム(ポートごと)を指定し、クライアントに対しては別のメカニズムを指定できます。構成が同じではない場合があるため、クライアントとWebサービスが同じproviderName
タイプを使用する必要はありません。
選択したメカニズムにかかわらず、providerName
が空の場合、使用可能な場合はoracle:jrf:Coherence
が使用され、それ以外の場合はoracle:jrf:Memory
が使用されます。
oracle:jrf:Coherence
を明示的に設定していて、使用できない場合、エラーが戻されます。
永続性を構成するには、次のメカニズムのいずれかを使用できます。それぞれの場合において、providerName
のみを指定します。これは、oracle:jrf:Memory
またはoracle:jrf:Coherence
のみ指定できます。
Webサービスの永続性の構成
「@Persistence」で説明され、次の例に示すように、設計時にWebサービスに@Persistence
ポリシー注釈を使用します。
@PortableWebService
@SecurityPolicy("oracle/wss11_username_token_with_message_protection_wssc_service_policy")
@Persistence(providerName="oracle:jrf:Coherence")
public class TestService {
......
}
「設計時におけるWebサービスおよびクライアントへのポリシーのアタッチ」で説明され、次の例に示すように、設計時にWebサービスに@PolicyReference
ポリシー注釈を使用します。
@PortableWebService
@SecurityPolicy("oracle/wss11_username_token_with_message_protection_wssc_service_policy")
@PolicySet(references={
@PolicyReference(value="oracle/wss11_username_token_with_message_protection_wssc_service_policy"),
@PolicyReference(value="oracle/persistence_policy")
})
public class TestService {
......
}
「Fusion Middleware Controlを使用したWebサービスおよびクライアントへのポリシーのアタッチ」および「WLSTを使用したWebサービスおよびクライアントへのポリシーのアタッチ」で説明されているように、Fusion Middleware ControlまたはWLSTデプロイ後にoracle/persistence_policy
をアタッチして、providerName
属性を設定します。
クライアントの永続性の構成
次の例に示すように、設計時にクライアントにpolicy-reference
要素を使用し、provider.name
プロパティを設定します。
String configString = "<port-info>\n" + " <policy-references>\n" + " <policy-reference uri=\"oracle/wss11_username_token_with_message_protection_wssc_client_policy\" category=\"security\"/>\n" + "<policy-reference uri=\"oracle/persistence_policy\" category=\"wsconfig\">"
+ "<property name=\"provider.name\" value=\"oracle:jrf:Memory\"/>
" + " </policy-reference>" + " </policy-references>\n" + "</port-info>"; // convert configString to Element ((BindingProvider) port).getRequestContext().put( ClientConstants.CLIENT_CONFIG, configElement);
次の例に示すように、設計時にPersistenceFeature
を設定します。
PersistenceFeature persistenceFeature =
PersistenceFeature.builder().providerName("oracle:jrf:Memory").build();
port = service.getPort(new WebServiceFeature[] {persistenceFeature});
「Fusion Middleware Controlを使用したWebサービスおよびクライアントへのポリシーのアタッチ」および「WLSTを使用したWebサービスおよびクライアントへのポリシーのアタッチ」で説明されているように、Fusion Middleware ControlまたはWLSTデプロイ後にoracle/persistence_policy
をアタッチして、providerName
属性を設定します。