3.5のセキュリティ環境との相互運用性この章の内容は次のとおりです。Frameworkを使用して構成されたWebサービス・セキュリティとの相互運用を可能にするための相互運用性テストを実施しました。Frameworkの詳細は、http://msdn.microsoft.com/en-us/netframework/aa663324.aspxを参照してください。Webサービスのためのセキュリティおよび管理者ガイド』の次の項を参照してください。3.5の最も一般的な相互運用性シナリオをまとめたものです。注意:以降のシナリオでは、v3証明書付きのキーストアを使用していることを確認してください。1.5キーツールでは、デフォルトでv1証明書付きのキーストアが生成されます。キーが適切な拡張(DigitalSignature、Non_repudiation、Key_EnciphermentおよびData_Enciphermentなど)を使用していることも確認してください。メッセージ送信最適化メカニズム(MTOM)この項では、次の相互運用性シナリオにおいてMTOMを実装する方法について説明します。Webサービスを構成するには、次の各項で説明する手順を実行します。Webサービスの構成Webサービス・アプリケーションを作成します。oracle/wsmotom_service_policyポリシーをWebサービスにアタッチします。Webサービスのためのセキュリティおよび管理者ガイド』のWebサービスへのポリシーのアタッチに関する項を参照してください。アプリケーションをデプロイします。3.5クライアントの構成SVCUtilユーティリティを使用して、デプロイされたWebサービスからクライアント・プロキシおよび構成ファイルを作成します。「MTOM相互運用性のためのapp.configファイルの例」を参照してください。クライアント・プログラムを実行します。MTOM相互運用性のためのapp.configファイルの例app.configファイルの例を次に示します。Webサービスを構成するには、次の各項で説明する手順を実行します。Webサービスを作成します。Contract』を参照してください。Webサービスの例」を参照してください。アプリケーションをデプロイします。Webサービスを使用するSOAコンポジットを作成します。Suiteの開発者ガイドを参照してください。oracle/wsmtom_client_policyポリシーをWebサービス・クライアントにアタッチします。Webサービスのためのセキュリティおよび管理者ガイド』のWebサービス・クライアントへのポリシーのアタッチに関する項を参照してください。Webサービスの例を次に示します。1.1に準拠するメッセージ保護付きユーザー名トークンを実装する方法について説明します。Webサービスを構成するには、次の各項で説明する手順を実行します。Webサービスの構成Webサービス・アプリケーションを作成します。次のポリシーの1つをWebサービスにアタッチします。Webサービスのためのセキュリティおよび管理者ガイド』のWebサービスへのポリシーのアタッチに関する項を参照してください。次のコマンドを使用して、サービス側のキーストアからX.509証明書ファイルを.cerファイル(alice.cerなど)にエクスポートします。(mmc)を使用して、(前にエクスポートした)証明書ファイルをクライアント・サーバー上のキーストアにインポートします。Snap-in』を参照してください。コマンド・プロンプトを開きます。mmcと入力して[Enter]を押します。snap-in」を選択します。Certificates」を選択します。注意:ローカル・マシン・ストア内の証明書を表示するためには、管理者ロールを持っている必要があります。「Add」を選択します。account」→「finish」を選択します。「OK」をクリックします。user」→「Personal」→「Certificates」の順に開きます。importウィザードを起動します。「Next」をクリックし、「Browse」を選択して、前にエクスポートした.cerファイルに移動します。「Next」をクリックし、デフォルトを受け入れてウィザードを終了します。WebサービスのWSDLを使用して、.NETクライアントを生成します。Client』を参照してください。注意:SVCUtilは、<sp:SignedParts>のようなセキュリティ・ポリシー・アサーションをサポートしていません。回避策として、次のようにします。ポリシーをデタッチします。SVCUtilを使用してプロキシを作成します。ポリシーをアタッチして元に戻します。Framework\System.Runtime.Serialization.dllを参照することにより、参照を追加します。「app.configファイルの編集」の説明に従って、.NETプロジェクト内のapp.configを編集して証明書ファイルを更新し、リプレイを無効化します。プロジェクトをコンパイルします。コマンド・プロンプトを開いて、プロジェクトのDebugフォルダに移動します。<client_project_name>.exeと入力して[Enter]を押します。次の例に示すようにapp.configファイルを編集して、証明書ファイルを更新し、リプレイを無効化します(変更部分は太字で示されています)。デフォルトのキー設定に従う場合は、<certificate_cn>をaliceに設定する必要があります。Webサービスを構成するには、次の各項で説明する手順を実行します。Webサービスを作成します。Contract』を参照してください。SymmetricSecurityBindingElementを使用してWebサービスのカスタム・バインディングを作成してください。Webサービス・クライアントの例」を参照してください。証明書ファイルを作成して、Webサービス・サーバー上のキーストアにインポートします。VisualStudioを使用する場合、コマンドは次のようになります。C:\wsmcert3.cerこのコマンドにより、証明書が作成されてmmcにインポートされます。コマンドの結果が期待どおりにならない場合は、次のコマンド・シーケンスを試行してください。(WDK)をダウンロードする必要があります。welcome1次に、PRF_WSMCert3.pfxをmmcにインポートします。keytoolコマンドを使用して、Webサービス・サーバー上に作成された証明書をクライアント・サーバーにインポートします。Explorer」をクリックします。bin/Debugフォルダに移動します。<project>.exeファイルをダブルクリックします。このコマンドにより、指定したURLでWebサービスが実行されます。Webサービスを使用するSOAコンポジットを作成します。Suiteの開発者ガイドを参照してください。JDeveloperで、.NETサービスのWSDLを使用してパートナ・リンクを作成します。oracle/wss11_username_token_with_message_protection_client_policyポリシーをWebサービス・クライアントにアタッチします。Webサービスのためのセキュリティおよび管理者ガイド』のWebサービス・クライアントへのポリシーのアタッチに関する項を参照してください。csf-keyおよびkeystore.recipient.aliasの構成を指定します。この情報を指定するには、ポリシーをアタッチするときにポリシー構成をオーバーライドします。Webサービスのためのセキュリティおよび管理者ガイド』のオーバーライド可能なクライアントのアタッチに関する項を参照してください。ステップ1でインポートした証明書(wsmcert3)の別名としてkeystore.recipient.aliasを構成してください。SSL経由のユーザー名トークンこの項では、次の相互運用性シナリオにおいてSSL経由のユーザー名トークンを実装する方法について説明します。Webサービスを構成するには、次の各項で説明する手順を実行します。Webサービスの構成サーバーをSSL用に構成します。ServerへのSSLの構成(双方向)に関する項を参照してください。次のポリシーの1つのコピーを作成します。oracle/wss_username_token_over_ssl_service_policyoracle/wss_saml_or_username_token_over_ssl_service_policy注意:使用できることがわかっている有効なポリシー・セットが常にあるように、事前定義済ポリシーは変更しないことをお薦めします。次のようにして、ポリシー設定を編集します。「Nonceが必要」構成設定を無効化します。それ以外の構成設定はすべてデフォルトの構成設定のままにしておきます。Webサービスのためのセキュリティおよび管理者ガイド』の既存のポリシーからのWebサービス・ポリシーの作成に関する項を参照してください。ポリシーをアタッチします。Webサービスのためのセキュリティおよび管理者ガイド』のWebサービスへのポリシーのアタッチに関する項を参照してください。3.5クライアントの構成WebサービスのWSDLを使用して、.NETクライアントを生成します。Client』を参照してください。Framework\System.Runtime.Serialization.dllを参照することにより、参照を追加します。「app.configファイルの編集」の説明に従って、app.configファイルを編集します。プロジェクトをコンパイルします。コマンド・プロンプトを開いて、プロジェクトのDebugフォルダに移動します。<client_project_name>.exeと入力して[Enter]を押します。次の例に示すようにapp.configファイルを編集して、証明書ファイルを更新し、リプレイを無効化します(変更部分は太字で示されています)。1.1標準に準拠するメッセージ保護付き相互認証を実装する方法について説明します。次のコマンドを使用して、サービス側のキーストアからX.509証明書ファイルを.cerファイル(alice.cerなど)にエクスポートします。(mmc)を使用して、(前にエクスポートした)証明書ファイルをクライアント・サーバー上のキーストアにインポートします。Snap-in』を参照してください。コマンド・プロンプトを開きます。mmcと入力して[Enter]を押します。snap-in」を選択します。Certificates」を選択します。注意:ローカル・マシン・ストア内の証明書を表示するためには、管理者ロールを持っている必要があります。「Add」を選択します。account」→「finish」を選択します。「OK」をクリックします。user」→「Personal」→「Certificates」の順に開きます。importウィザードを起動します。「Next」をクリックし、「Browse」を選択して、前にエクスポートした.cerファイルに移動します。「Next」をクリックし、デフォルトを受け入れてウィザードを終了します。Webサービスを構成するには、次の各項で説明する手順を実行します。Webサービスの構成SOAコンポジットを作成してデプロイします。Managerで、次のポリシーをクローニングします。oracle/wss11_x509_token_with_message_protection_service_policyポリシー名をwss11_x509_token_with_message_protection_service_policy_netに変更します。wss11_x509_token_with_message_protection_service_policy_netをエクスポートします。encrypted="true"を"false"に変更し、再びインポートします。Managerを使用して、ポリシーをWebサービスにアタッチします。Webサービスのためのセキュリティおよび管理者ガイド』のWebサービスへのポリシーのアタッチに関する項を参照してください。3.5クライアントの構成SVCUtilユーティリティを使用して、クライアント・プロキシを作成し(「サンプルのクライアント・プログラム」を参照)、デプロイされたWebサービスから構成ファイルを作成します。Framework\System.Runtime.Serialization.dllを参照することにより、参照を追加します。app.config構成ファイルを作成します。次のコードを<system.serviceModel>要素の後に追加します。<customBinding>次のようにエンドポイント動作を変更します。</endpoint>次のようにしてメッセージ・リプレイ検出を無効化します。maxCookieCachingTime="Infinite"次に示すようにカスタム・バインディングを作成します。authenticationMode="MutualCertificate"構成ファイルの例は、「サンプルのapp.configファイル」を参照してください。プロジェクトをコンパイルします。コマンド・プロンプトを開いて、プロジェクトのDebugフォルダに移動します。<client_project_name>.exeと入力して[Enter]を押します。サンプルのapp.configファイルapp.configファイルの例を次に示します。Webサービスを構成するには、次の各項で説明する手順を実行します。Webサービスを作成します。Contract』を参照してください。Webサービス・クライアントの例」を参照してください。SymmetricSecurityBindingElementを使用して、Webサービスのカスタム・バインディングを作成します。SecurityBindingElement』を参照してください。SymmetricSecurityBindingElementオブジェクトのサンプルを次に示します。=true;アプリケーションをデプロイします。Webサービスを使用するSOAコンポジットを作成します。Suiteの開発者ガイドを参照してください。JDeveloperで、.NETサービスのWSDLを使用してパートナ・リンクを作成し、次のようにインポートを追加します。Managerで、wss11_x509_token_with_message_protection_service_policyポリシーをクローニングします。ポリシー名をwss11_x509_token_with_message_protection_service_policy_netに変更します。wss11_x509_token_with_message_protection_service_policy_netをエクスポートします。encrypted="true"を"false"に変更し、再びインポートします。orasp:sign-key-ref-mech="direct"/>ポリシーをWebサービス・クライアントにアタッチします。Webサービスのためのセキュリティおよび管理者ガイド』のWebサービス・クライアントへのポリシーのアタッチに関する項を参照してください。keystore.recipient.aliasの構成を指定します。この情報を指定するには、ポリシーをアタッチするときにポリシー構成をオーバーライドします。Webサービスのためのセキュリティおよび管理者ガイド』のオーバーライド可能なクライアントのアタッチに関する項を参照してください。ステップ4でインポートした証明書(wsmcert3)の別名としてkeystore.recipient.aliasを構成してください。クライアントからWebサービス・メソッドを起動します。メッセージ保護付きKerberosこの項では、次の相互運用性シナリオにおいてメッセージ保護付きKerberosを実装する方法について説明します。次の前提条件ステップを実行します。鍵配布センター(KDC)およびアクティブ・ディレクトリ(AD)を構成します。詳細は、http://download.oracle.com/docs/cd/E19316-01/820-3746/gisdn/index.htmlのWindowsのアクティブ・ディレクトリおよびドメイン・コントローラの構成方法(ドメイン・コントローラがKDCの役割を果たします)に関する項を参照してください。例5-1に示すように、c:\winntにあるKerberosの構成ファイルkrb5.confを設定します。Webサービスを構成するには、次の各項で説明する手順を実行します。Webサービスの構成Webサービス・アプリケーションを作成します。wss11_kerberos_with_message_protection_service_policyポリシーをコピーします。ポリシー設定を編集して、アルゴリズム・スイートを「Basic128Rsa15」に設定します。ポリシーをWebサービスにアタッチします。Webサービスのためのセキュリティおよび管理者ガイド』のWebサービス・クライアントへのポリシーのアタッチに関する項を参照してください。アプリケーションをデプロイします。3.5クライアントの構成ADにユーザーを作成して、Webサービスがホストされるホストを指定します。デフォルトでは、ユーザー・アカウントはRC4-HMAC暗号を使用して作成されます。ユーザー名をfoobarとすると、HTTP/foobarとなります。次のようにktpassコマンドを使用して、KDCが実行されているWindowsのADマシンにkeytabファイルを作成します。4HTTP/foobarがユーザー「foobar」にマッピングされるSPNです。「/desonly」を指定したり、「/cyrpto」に「des-cbc-crc」は指定しないでください。MYCOMPANY.LOCALはKDCのデフォルトのレルムで、krb5.iniファイルで使用可能です。passに指定するパスワードは、ユーザーの作成時のパスワードと一致している必要があります。FTPのバイナリ・モードを使用して、生成したキータブ・ファイルをSOAコンポジットWebサービスがホストされているマシンに移動します。次のようにsetSpnコマンドを使用して、サービス・プリンシパルをユーザーにマッピングします。foobarユーザーにマッピングするSPNは1つにしてください。<username>コマンドを使用して削除します。SVCUtilユーティリティを使用して、デプロイされたWebサービスからクライアント・プロキシおよび構成ファイルを作成します。Windowsのエクスプローラでアプリケーションを右クリックして、generatedProxy.csファイルおよびapp.configファイルを追加し、既存の項目を追加を選択します。app.configのendpoint要素に、「HTTP/foobar@MYCOMPANY.LOCAL」というサービス・プリンシパル名(keytabの作成で使用したものと同じ値)の「identity」要素を追加します。</client>バインドのサンプルを例5-2に示します。WSMポリシーがアタッチされているWebサービスでは機能しません。ユーティリティを実行する前にサービスからポリシーをデタッチし、プロキシを生成して、すべてのアーティファクトの生成に成功してから再びアタッチします。クライアント・プログラムを実行します。3.5クライアントの保護について説明します。注意:SAML送信者保証トークンは、この使用例ではサポートされません。R2システムにインストールして構成することを想定しています。このシステムはSTSロールで設定されます。この項の項目は次のとおりです。2.0のインストールと構成について説明します。この項の項目は次のとおりです。Directoryをインストールして構成します。関連リンクおよび詳細は、http://technet.microsoft.com/en-us/windowsserverを参照してください。2.0をインストールして、ウィザードを使用して構成します。関連リンクおよび詳細は、http://technet.microsoft.com/en-us/windowsserver/dd448613を参照してください。ダウンロード情報は、http://go.microsoft.com/fwlink/?linkid=151338を参照してください。サーバー」をクリックしてください。マネージャ・コンソールを使用して、IISで自己署名入りサーバー認証証明書を作成して構成し、デフォルトのWebサイトにバインドします。完了したら、SSLサーバー認証を有効にします。2.0設定ウィザードが自動的にシステムのWebサーバー(IIS)サーバー・ロールにインストールされます。自己書名付きサーバー認証証明書の作成の概要は、http://technet.microsoft.com/en-us/library/cc771041%28v=ws.10%29.aspxに記載されています。この項の手順では、ユースケース固有の情報を提供します。マネージャ・コンソールを開きます。マネージャ」をクリックします。コンソール・ツリーで、システムの名前を含むルート・ノードをクリックしてから、詳細ペインで、IISグループの「サーバー証明書」というアイコンをダブルクリックします。「操作」ペインで、「自己署名入り証明書の作成」をクリックします。Site」をクリックします。「操作」ペインで、「バインド」をクリックします。バインド」ダイアログ・ボックスで「追加」をクリックします。バインドの追加」ダイアログ・ボックスで、「種類」ドロップダウン・リストの「https」を選択します。証明書」ドロップダウン・リストで作成した証明書を選択し、「OK」→「閉じる」をクリックします。マネージャ・コンソールを閉じます。SSLサーバー認証を有効にします。スタンドアロン・フェデレーション・サーバーとしてのシステムの構成http://technet.microsoft.com/en-us/library/ee913579%28v=ws.10%29.aspxの説明に従って、システムをスタンドアロン・フェデレーション・サーバーとして構成します。2.0トークン署名証明書をエクスポートします。(.cer)」を選択します。(.P7B)」を選択し、「証明のパスにある証明書を可能であればすべて含む」を選択します。電子メール・アドレスがあるユーザーの作成ユーザーを作成し、電子メール・アドレスを含めます。後でSTSを有効にして、サービス用の送信SAMLアサーションのサブジェクト名IDとして電子メール・アドレスを送信します。Directoryに追加します。各ユーザーに電子メール・アドレスを設定してください。ドメイン管理者の資格証明を使用してシステムにログインします。Directoryユーザーとコンピュータ」をクリックします。ユーザー」をクリックします。ユーザー」ページで、ユーザーを追加し、「次へ」をクリックします。パスワードを入力し、「ユーザーは次回ログオン時にパスワード変更が必要」チェック・ボックスを選択解除し、「次へ」をクリックします。「終了」をクリックします。Directoryユーザーとコンピュータ」の右端のペインで、新しいユーザー・オブジェクトを右クリックし、「プロパティ」をクリックします。「全般」タブの「電子メール」ボックスに、ユーザーの電子メール・アドレスを入力し、「OK」をクリックします。2.0トークン署名証明書のエクスポート」でエクスポートしたSTS署名証明書を取得します。証明書チェーンの.p7bファイルの場合、IEでファイルを開き、各証明書を.cerファイルのチェーンにコピーします。keytoolを使用して証明書をデフォルトのキーストアの場所にインポートします。default-keystore.jkshttp://domain-name/adfs/services/trustをSAMLの信頼できる発行者として追加します。Webサービスのためのセキュリティおよび管理者ガイド』の署名証明書の信頼できる発行者および信頼できる識別名リストの定義に関する項を参照してください。2253で定義)を追加します。2253に準拠する文字列を使用してください。keytoolなどの任意のメカニズムを使用して、証明書を表示し、サブジェクトDNを決定できます。Webサービスのためのセキュリティおよび管理者ガイド』の署名証明書の信頼できる発行者および信頼できる識別名リストの定義に関する項を参照してください。各ユーザーに、ADFSに設定されるユーザー電子メール・アドレスと一致するメール属性を構成します。Directory管理者ガイド』のユーザー作成のためのディレクトリ・エントリの管理に関する説明を参照してください。WSMのoracle/wss11_saml_or_username_token_with_message_protection_service_policyまたはoracle/wss_saml_token_bearer_over_ssl_service_policyポリシーをWebサービスにアタッチします。SOAPヘッダーの、確認方法がベアラーのSAMLトークンに含まれる資格証明を使用する、SAMLベースの認証を実行します。トランスポート・プロトコルによりSSLメッセージ保護が提供されることも検証します。Webサービスのためのセキュリティおよび管理者ガイド』のWebサービスへのポリシーのアタッチに関する項を参照してください。リライイング・パーティの概要は、http://technet.microsoft.com/en-us/library/dd807108%28v=ws.10%29.aspxを参照してください。この項では、ユースケース固有の情報を提供します。2.0」をクリックします。追加ウィザードを開始します。「ようこそ」ページで、「開始」をクリックして開始します。「証明書利用者についてのデータを手動で入力する」を選択します。表示名を入力し、必要に応じてメモを入力します。2.0プロファイル」を選択します。「証明書の構成」ページで、「次へ」をクリックします。このページでのトークン暗号化証明書の構成はオプションです。トークンを暗号化する必要がある場合は、このページで構成します。トークン暗号化証明書を構成しない場合、STSによって発行されるトークンはこのサービスで暗号化されません。WS-Trustは常に有効です。識別子」に、サービスのURLを入力し、「追加」をクリックします。このリライイング・パーティへのアクセスをすべてのユーザーに許可します。「次へ」→「閉じる」をクリックします。idとして電子メール・アドレスまたは名前IDを送信するには、この項の手順を使用して、テンプレートの異なる2つの要求規則のチェーンを作成します。要求規則の概要は、http://technet.microsoft.com/en-us/library/ee913578%28v=ws.10%29.aspxを参照してください。LDAP属性を要求として送信する規則を作成するには、http://technet.microsoft.com/en-us/library/dd807115%28v=ws.10%29.aspxを参照してください。この項では、ユースケース固有の情報を提供します。タブで、「規則の追加」を選択します。属性を要求として送信」を選択します。Attributesなどの名前を付けます。Addressに設定します。サブジェクト名IDとして、かわりに名前IDを使用する場合は、「LDAP属性」の下でSAM-Account-Nameを選択します。「終了」を選択します。サブジェクト名IDとして名前IDを使用する場合は、「OK」をクリックして、プロパティ・ページを閉じ、リライイング・パーティの信頼への変更を保存します。サブジェクト名IDとして電子メール・アドレスを使用する場合は、引き続き、規則を追加します。「規則の追加」を選択します。使用する要求規則テンプレートとして「入力方向の要求の変換」を選択します。IDなどの名前を付けます。Addressに設定します。(前の規則の「出力方向の要求の種類」と一致している必要があります。形式」をEmailとして設定します(urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress)。すべての要求値をパス・スルーし、「完了」をクリックします。「OK」をクリックして、プロパティ・ページを閉じ、リライイング・パーティの信頼への変更を保存します。3.5クライアントを保護します。2008をインストールします。STSおよびサービス用のSSLサーバー証明書をWindowsにインポートします。STSまたはサービス用のSSLサーバー証明書が、信頼できるCAから発行されていない、または自己署名入りである場合は、第5.6.1項「相互運用性のための構成の前提条件」の説明に従って、MMCツールを使用してインポートする必要があります。WCFクライアントを作成して構成します。STSにより、トークンに対する保険としての複数のセキュリティおよび認証メカニズムがサポートされます。これらはそれぞれ個別のエンドポイントとして公開されます。ユーザー名/パスワード認証では、2つのエンドポイントが提供されます。このエンドポイントはメッセージ保護付きユーザー名トークン用です。このエンドポイントはトランスポート保護(SSL)付きユーザー名トークン用です。WCFクライアントは、SSLのユーザー名トークン用のhttps://<adfs.domain>/adfs/services/trust/13/usernamemixedエンドポイントを使用して、サービスのSAMLベアラー・トークンを取得します。サービスWSDLを使用して、WCFクライアントを生成します。Foundationクライアントの作成の詳細は、http://msdn.microsoft.com/en-us/library/ms733133(v=vs.90)を参照してください。注意:SVCUtilは、OWSMポリシーのoracle/wss11_saml_or_username_token_with_message_protection_service_policy、またはoracle/wss_saml_bearer_token_over_ssl_service_policyポリシーにアドバタイズされるポリシーの代替があるセキュリティ・ポリシーをサポートしません。この回避方法は、次のとおりです。サービスのポリシーをデタッチします。SVCUtilを使用してプロキシを作成します。ポリシーをサービスにアタッチして戻します。クライアントをws2007FederationHttpBindingで構成します。Framework\System.Runtime.Serialization.dllを参照することにより、参照を追加します。app.configファイルを編集します。2007フェデレーションHTTPバインディングの詳細は、http://msdn.microsoft.com/en-us/library/bb472490.aspxを参照してください。)次のサンプルを考えてみます。</system.serviceModel></configuration>program.csファイルを編集し、サービスの呼出しを行います。存在していない場合は、プロジェクトに.csファイルを作成し、program.csという名前(または任意の名前)を付けます。次と一致するように編集します。}}このサンプルprogram.csファイルの場合:joeはユーザー名、eojはパスワードであり、STSに対して認証するためにクライアントによって使用されます。true);は、サーバー側の自己署名入り証明書を検証するために追加されています。サーバー証明書が信頼できるCAから発行されている場合、これは不要です。テスト用に自己署名入り証明書を使用している場合、この方法を追加してクライアント側の証明書を検証します。reserved.法律上の注意点ライブラリ。