プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Web Services Manager相互運用性ソリューション・ガイド
12c (12.2.1.2)
E82846-02
目次へ移動
目次

前
次

6 Microsoft WCF/.NET 4.5のセキュリティ環境との相互運用性

Oracle Web Services Manager (OWSM)は、Microsoft WCF/.NET 4.5のセキュリティ環境と相互運用できます。OWSMとMicrosoft WCF/.NET 4.5のセキュリティ環境との間の相互運用性を実現するため、WS-Security 1.1標準に準拠するポリシーがWebサービスにアタッチされます。

この章の内容は次のとおりです。

6.1 Microsoft WCF/.NET 4.5のセキュリティ環境の相互運用性の理解

オラクル社は、OWSM 12cを使用して作成されたWebサービス・セキュリティ・ポリシーと、Microsoft Windows Communication Foundation (WCF)/.NET 4.5 Frameworkを使用して構成されたWebサービス・ポリシーとの相互運用を可能にするための相互運用性テストを実施しました。

Microsoft .NET 4.5 (以前) Frameworkの詳細は、http://msdn.microsoft.com/en-us/library/ff361664%28v=vs.110%29.aspxの「.NET Development」を参照してください。

OWSMの事前定義済ポリシーおよび相互運用性シナリオは、次の項で説明します。

6.1.1 Microsoft WCF/.NET 4.5のセキュリティ環境向けのOWSM事前定義済ポリシー

Microsoft WCF/.NET 4.5のセキュリティ環境向けのOWSM事前定義済ポリシーの詳細は、次のトピックを確認してください。

詳細は、次を参照してください。

  • OWSM事前定義済ポリシーについては、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の事前定義済ポリシーに関する説明を参照してください。

  • OWSM 12cポリシーの構成およびアタッチについては、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービスの保護に関する説明およびポリシーのアタッチに関する説明を参照してください。

注意:

ほとんどの場合、アプリケーションのデプロイ前にソース・コード内のOWSMポリシーをアタッチすることも、WLSTまたはFusion Middleware Controlを使用してデプロイメント後にポリシーをアタッチすることもできます。この章の手順を簡略化するには、デプロイメント後にポリシーをアタッチしていることが前提です。デプロイ前にポリシーをアタッチすることが必要な状況の場合、その方法がこの手順で説明されています。

注意:

この章で説明する手順の一部では、Microsoft ServiceModelメタデータ・ユーティリティ・ツール(SvcUtil.exe)を使用して、デプロイされたWebサービスからクライアント・プロキシおよび構成ファイルを作成するよう指示します。ただし、SvcUtil.exeは、OWSMで使用される特定のセキュリティ・ポリシー・アサーションでは動作しません。回避策として、OWSMポリシーによって保護されているWebサービスのWCFプロキシを作成する際に、次のことを行います。

  • ポリシーをデタッチします。

  • SvcUtil.exeを使用してプロキシを作成します。

  • ポリシーを再アタッチします。

SvcUtil.exeの詳細は、http://msdn.microsoft.com/en-us/library/aa347733%28v=vs.110%29.aspxを参照してください。

6.1.2 Microsoft WCF/.NET 4.5の相互運用性シナリオ

OWSM 12cとMicrosoft WCF/.NET 4.5との間の相互運用性には様々なシナリオがあります。

Microsoft .NET 4.5の最も一般的な相互運用性シナリオは、次のセキュリティ要件(認証、メッセージ保護およびトランスポート)に基づいています。

注意:

以降のシナリオでは、v3証明書付きのキーストアを使用していることを確認してください。JDK 1.5キーツールでは、デフォルトでv1証明書付きのキーストアが生成されます。

また、キーが適切な拡張(DigitalSignature、Non_repudiation、Key_EnciphermentおよびData_Enciphermentなど)を使用していることも確認してください。

次の表に、OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーの相互運用性シナリオを示します。


表6-1 OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーの相互運用性

アイデンティティ・トークン WS-Securityバージョン メッセージ保護 トランスポート・セキュリティ サービス・ポリシー クライアント・ポリシー

MTOM

該当なし

該当なし

該当なし

oracle/wsmtom_policy

OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントの構成(メッセージ送信最適化メカニズム)

ユーザー名またはSAML

1.1

はい

いいえ

oracle/wss11_username_token_with_message_protection_service_policy

または

oracle/wss11_saml_or_username_token_with_message_protection_service_policy

Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きユーザー名トークン)

ユーザー名

1.0および1.1

いいえ

はい

oracle/wss_saml_or_username_token_over_ssl_service_policy

または

oracle/wss_username_token_over_ssl_service_policy

Microsoft WCF/.NET 4.5クライアントの構成(SSL経由のユーザー名トークン)

相互認証

1.1

はい

いいえ

oracle/wss11_x509_token_with_message_protection_service_policy

Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付き相互認証)

Kerberos

1.1

はい

いいえ

oracle/wss11_kerberos_token_with_message_protection_service_policy

Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きKerberos)

SAMLベアラー

1.0

いいえ

はい

oracle/wss_sts_issued_saml_bearer_token_over_ssl_service_policy

または

oracle/wss_saml_token_bearer_over_ssl_service_policy

ADFS 2.0を使用するWCF/.NET 4.5クライアントの保護


次の表に、Microsoft WCF/.NET 4.5サービス・ポリシーとOWSM 12cクライアント・ポリシーの相互運用性シナリオを示します。


表6-2 Microsoft WCF/.NET 4.5サービス・ポリシーとOWSM 12cクライアント・ポリシーの相互運用性

アイデンティティ・トークン WS-Securityバージョン メッセージ保護 トランスポート・セキュリティ サービス・ポリシー クライアント・ポリシー

MTOM

該当なし

該当なし

該当なし

Microsoft WCF/.NET 4.5 Webサービスの構成(MTOM)

oracle/wsmtom_policy

ユーザー名

1.1

はい

いいえ

Microsoft WCF/.NET 4.5 Webサービスの構成(メッセージ保護付きユーザー名トークン)

oracle/wss11_username_token_with_message_protection_client_policy

SSL経由のユーザー名トークン

1.0

いいえ

はい

Microsoft WCF/.NET 4.5 Webサービスの構成(SSL経由のユーザー名トークン)

oracle/wss_username_token_over_ssl_client_policy

相互認証

1.1

はい

いいえ

Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントの構成(メッセージ保護付き相互認証)

oracle/wss11_x509_token_with_message_protection_client_policy


6.2 Microsoft WCF/.NET 4.5クライアント向けのメッセージ送信最適化メカニズムの実装

メッセージ送信最適化メカニズム(MTOM)を実装して、OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーとの間の相互運用性およびMicrosoft WCF/.NET 4.5サービス・ポリシーとOWSM 12cクライアント・ポリシーとの間の相互運用性を実現できます。

次のトピックでは、様々な相互運用性シナリオにおいてMTOMを実装する方法について説明します。

6.2.1 OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントの構成(メッセージ送信最適化メカニズム)

OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを使用してメッセージ送信最適化メカニズム(MTOM)を実装できます。

OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを構成するには、次のようにします。

  1. Webサービス・アプリケーションを作成してデプロイします。

    詳細は、『Webサービスの管理』のWebサービス・アプリケーションのデプロイに関する説明を参照してください。

  2. oracle/wsmtom_policyポリシーをWebサービスにアタッチします。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

  3. Microsoft WCF/.NET 4.5クライアントを構成するには、Microsoft SvcUtilユーティリティを使用して、デプロイされたWebサービスからクライアント・プロキシおよび構成ファイルを作成します。

    MTOM相互運用性のサンプルは、次のapp.configファイルを参照してください。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.serviceModel>    
            <bindings>
                <customBinding>
                    <binding name="CustomBinding_IMTOMService">                
                        <mtomMessageEncoding maxReadPoolSize="64"
                         maxWritePoolSize="16"
                            messageVersion="Soap12" maxBufferSize="65536"
                            writeEncoding="utf-8">
                            <readerQuotas maxDepth="32" maxStringContentLength=
                             "8192" maxArrayLength="16384"
                                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        </mtomMessageEncoding>
                        <httpTransport manualAddressing="false" maxBufferPoolSize="524288"
                            maxReceivedMessageSize="65536" allowCookies="false"
                               authenticationScheme="Anonymous"
                            bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                            keepAliveEnabled="true" maxBufferSize="65536"
                               proxyAuthenticationScheme="Anonymous"
                            realm="" transferMode="Buffered" 
                               unsafeConnectionNtlmAuthentication="false"
                            useDefaultWebProxy="true" />
                    </binding>
                </customBinding>
            </bindings>
            <client>
              <endpoint address="<endpoint_url>"
                  binding="customBinding" bindingConfiguration="CustomBinding_IMTOMService"
                  contract="IMTOMService" name="CustomBinding_IMTOMService" >
              </endpoint>         
            </client>          
        </system.serviceModel>
    </configuration>
    

    詳細は、http://msdn.microsoft.com/en-us/library/aa347733%28v=vs.110%29.aspxの「ServiceModel Metadata Utility Tool (Svcutil.exe)」を参照してください。

  4. クライアント・プログラムを実行します。

6.2.2 Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントの構成(メッセージ送信最適化メカニズム)

Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントを使用してメッセージ送信最適化メカニズム(MTOM)を実装できます。

次のトピックでは、Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントを構成してメッセージ送信最適化メカニズムを実装する方法を説明します。

6.2.2.1 Microsoft WCF/.NET 4.5 Webサービスの構成(MTOM)

Microsoft WCF/.NET 4.5 Webサービスを構成して、OWSM 12cクライアントとの相互運用性のためのメッセージ送信最適化メカニズム(MTOM)を実装できます。

Microsoft WCF/.NET 4.5 Webサービスを構成するには、次のようにします。

  1. .NET Webサービスを作成します。

    例については、次のMTOM相互運用性のための.NET Webサービスのサンプルを参照してください。

    static void Main(string[] args)
    {
        string uri = "http://host:port/TEST/MTOMService/SOA/MTOMService";
        // Step 1 of the address configuration procedure: Create a URI to serve as the base address.
        Uri baseAddress = new Uri(uri);
    
        // Step 2 of the hosting procedure: Create ServiceHost
        ServiceHost selfHost = new ServiceHost(typeof(MTOMService), baseAddress);
     
        try {
            HttpTransportBindingElement hb = new HttpTransportBindingElement();
            hb.ManualAddressing = false;
            hb.MaxBufferPoolSize = 2147483647;               
            hb.MaxReceivedMessageSize = 2147483647;
            hb.AllowCookies = false;
            hb.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
            hb.KeepAliveEnabled = true;
            hb.MaxBufferSize = 2147483647;
            hb.ProxyAuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
            hb.Realm = "";
            hb.TransferMode = System.ServiceModel.TransferMode.Buffered;
            hb.UnsafeConnectionNtlmAuthentication = false;
            hb.UseDefaultWebProxy = true;
            MtomMessageEncodingBindingElement me = new MtomMessageEncodingBindingElement();
            me.MaxReadPoolSize=64;
            me.MaxWritePoolSize=16;
            me.MessageVersion=System.ServiceModel.Channels.MessageVersion.Soap12;
            me.WriteEncoding = System.Text.Encoding.UTF8;
            me.MaxWritePoolSize = 2147483647;
            me.MaxBufferSize = 2147483647;
            me.ReaderQuotas.MaxArrayLength = 2147483647;
            CustomBinding binding1 = new CustomBinding();
            binding1.Elements.Add(me);
            binding1.Elements.Add(hb);
            ServiceEndpoint ep = selfHost.AddServiceEndpoint(typeof(IMTOMService), binding1, 
                   "MTOMService");
            EndpointAddress myEndpointAdd = new EndpointAddress(new Uri(uri),
            EndpointIdentity.CreateDnsIdentity("WSMCert3"));               
            ep.Address = myEndpointAdd;
    
            // Step 4 of the hosting procedure: Enable metadata exchange.
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            selfHost.Description.Behaviors.Add(smb);
            using (ServiceHost host = new ServiceHost(typeof(MTOMService)))
            {
                System.ServiceModel.Description.ServiceDescription svcDesc = 
                     selfHost.Description;
                ServiceDebugBehavior svcDebug = 
                      svcDesc.Behaviors.Find<ServiceDebugBehavior>();
                svcDebug.IncludeExceptionDetailInFaults = true;
            }
     
            // Step 5 of the hosting procedure: Start (and then stop) the service.
            selfHost.Open();
            Console.WriteLine("The service " + uri + " is ready.");
            Console.WriteLine("Press <ENTER> to terminate service.");
            Console.WriteLine();
            Console.ReadLine();
            // Close the ServiceHostBase to shutdown the service.
            selfHost.Close();
        }
        catch (CommunicationException ce)
        {
            Console.WriteLine("An exception occurred: {0}", ce.Message);
            selfHost.Abort();
        }
    }

    詳細は、http://msdn.microsoft.com/en-us/library/ms731835.aspxの『How to: Define a Windows Communication Foundation Service Contract』を参照してください。

  2. アプリケーションをデプロイします。

6.2.2.2 Microsoft WCF/.NET 4.5 WebサービスのためのOWSM 12cクライアントの構成(メッセージ送信最適化メカニズム)

OWSM 12cクライアントを構成して、Microsoft WCF/.NET 4.5 Webサービスとの相互運用性のためのメッセージ送信最適化メカニズム(MTOM)を実装できます。

OWSM 12cクライアントを構成するには、次のようにします。

  1. JDeveloperを使用して、.NET Webサービスを使用するSOAコンポジットを作成します。

    詳細は、SOA Suiteの開発者ガイドを参照してください。

  2. oracle/wsmtom_policyポリシーをWebサービス・クライアントにアタッチします。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

6.3 Microsoft WCF/.NET 4.5クライアント向けのメッセージ保護付きユーザー名トークン(WS-Security 1.1)の実装

メッセージ保護付きユーザー名トークン・ポリシーは、WS-Security 1.1標準に準拠します。このポリシーは、OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーとの間の相互運用性およびMicrosoft WCF/.NET 4.5サービス・ポリシーとOWSM 12cクライアント・ポリシーとの間の相互運用性を実現するために実装されます。

次のトピックでは、様々な相互運用性シナリオにおいてメッセージ保護付きユーザー名トークンを実装する方法について説明します。

6.3.1 OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きユーザー名トークン)

OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを使用して、WS-Security 1.1標準に準拠したメッセージ保護付きユーザー名トークンを実装できます。

次のトピックでは、セキュアな通信を有効化する場合およびしない場合に、メッセージ保護付きユーザー名トークンを実装するために、OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを構成する方法を示します。

6.3.1.1 Microsoft WCF/.NET 4.5クライアントのためのOWSM 12c Webサービスの構成(メッセージ保護付きユーザー名トークン)

OWSM 12c Webサービスを構成して、Microsoft WCF/.NET 4.5クライアントとの相互運用性のためのメッセージ保護付きユーザー名トークンを実装できます。

OWSM 12c Webサービスを構成するには、次のようにします。

  1. SOAP 1.2準拠のWebサービス・アプリケーションを作成します。

  2. セキュアな通信を有効化するかどうかに基づいて、使用するポリシーを選択します。

    1. セキュアな通信を有効化しない場合、次のいずれかのポリシーのクローンを作成します。

      oracle/wss11_saml_or_username_token_with_message_protection_service_policy

      oracle/wss11_username_token_with_message_protection_service_policy

      注意:

      セキュアな通信を有効化しない場合、Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きユーザー名トークン)の説明に従って、クライアントのestablishSecurityContextプロパティをfalseに設定する必要があります。

    2. セキュアな通信を有効化するには、次のポリシーのクローンを作成します。

      oracle/wss11_username_token_with_message_protection_wssc_service_policy

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーのクローニングに関する説明を参照してください。

  3. 前述のステップ2でクローン作成されたポリシーのポリシー構成設定を、次のように編集します。

    1. X509トークン導出キー構成設定を有効化します。

    2. 「署名の暗号化」構成設定を有効化します。

    3. 「署名の確認」構成設定を無効化します。

    4. それ以外の構成設定はすべてデフォルトの構成設定のままにしておきます。

    ポリシーをWebサービスにアタッチします。詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

  4. 次のポリシーもアタッチします。

    oracle/wsaddr_policy

  5. 次のコマンドを使用して、サービス側のキーストアからX.509証明書ファイルを.cerファイル(alice.cerなど)にエクスポートします。

    keytool -export -alias alice -file C:\alice.cer -keystore default-keystore.jks
    

    詳細は、「keytool - 鍵および証明書管理ツール」(http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html)を参照してください。

6.3.1.2 Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きユーザー名トークン)

Microsoft WCF/.NET 4.5クライアントを構成して、OWSM 12c Webサービスとの相互運用性のためのメッセージ保護付きユーザー名トークンを実装できます。

Microsoft WCF/.NET 4.5クライアントを構成するには、次のようにします。

  1. 次のようにして、Microsoft Management Console (mmc)を使用して、(前にエクスポートした)証明書ファイルをクライアント・サーバー上のキーストアにインポートします。

    1. コマンド・プロンプトを開きます。

    2. mmcと入力して[Enter]を押します。

    3. 「File」→「Add/Remove snap-in」を選択します。

    4. 「Add and Choose Certificates」を選択します。

      注意:

      ローカル・マシン・ストア内の証明書を表示するためには、管理者ロールを持っている必要があります。

    5. 「Add」を選択します。

    6. 「My user account」→「finish」を選択します。

    7. 「OK」をクリックします。

    8. 「Console Root」→「Certificates -Current user」→「Personal」→「Certificates」の順に開きます。

    9. 「Certificates」を右クリックし、「All tasks」→「Import」を選択してCertificate importウィザードを起動します。

    10. 「Next」をクリックし、「Browse」を選択して、前にエクスポートした.cerファイルに移動します。

    11. 「Next」をクリックし、デフォルトを受け入れてウィザードを終了します。

    詳細は、http://msdn.microsoft.com/en-us/library/ms788967.aspxの『How to: View Certificates with the MMC Snap-in』を参照してください。

  2. WebサービスのWSDLを使用して、.NETクライアントを生成します。

    注意:

    『Oracle WebLogic Server JAX-WS Webサービスの開発』のWS-Addressingアクション・プロパティの暗黙的な関連付けに関する項の説明に従って、クライアントが暗黙的なwsa:Actionヘッダーを送信しないように、WS-Addressingアクション・ヘッダーを設定する必要がある場合があります。

    詳細は、http://msdn.microsoft.com/en-us/library/ms733133(v=vs.110).aspxの『How to: Create a Windows Communication Foundation Client』を参照してください

  3. 次のサンプルに示すように、.NETプロジェクトのapp.configファイルを編集して、証明書ファイルを更新し、リプレイを無効化します(変更部分は太字で示されています)。デフォルトのキー設定に従う場合は、<certificate_cn>aliceに設定する必要があります。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.serviceModel>
        <behaviors>
          <endpointBehaviors>
             <behavior name="secureBehaviour">
               <clientCredentials>
                 <serviceCertificate>
                   <defaultCertificate findValue="<certificate_cn>" 
                    storeLocation="CurrentUser" storeName="My" 
                    x509FindType="FindBySubjectName"/>
                 </serviceCertificate>
               </clientCredentials>
             </behavior>
          </endpointBehaviors>
        </behaviors>
        <bindings>
          <ws2007HttpBinding>
            <binding name="Wss11UsernameTokenWithMessageProtectionWSSCServicePortBinding" >
              <security mode="Message">
                <message clientCredentialType="UserName"
                    negotiateServiceCredential="false" 
                    algorithmSuite="Basic128"
                    establishSecurityContext="true" />
                    <!-- extablishSecurityContext is true by default and therefore does not 
                    have to be specified to enable secure conversation.
                    Set establishSecurityContext to false if secure conversation is not enabled -->
              </security>
            </binding>
          </ws2007HttpBinding>
        </bindings>
      <client>
        <endpoint address="http://10.244.167.70:7003/OWSMTestApp-Project1-context-root/ws11_username_token_with_message_protection_wsscPort?wsdl" 
            behaviorConfiguration="PMCert"
            binding="ws2007HttpBinding" 
            bindingConfiguration="Wss11UsernameTokenWithMessageProtectionWSSCServicePortBinding"   
            contract="ServiceReference1.ws11_username_token_with_message_protection_wssc" 
            name="ws11_username_token_with_message_protection_wsscPort">
          <identity>
            <dns value="orakey" />
          </identity>
        </endpoint>
      </client>
      </system.serviceModel>
    </configuration>
  4. セキュアな通信を有効化しているかどうかに従って、app.configファイルのestablishSecurityContextプロパティを設定する必要があります。

    デフォルトでは、establishSecurityContexttrue (セキュアな通信を有効化している)に設定されます。セキュアな通信を有効化していない場合、establishSecurityContextfalseに設定します。

    例については、サンプル(太字斜体の行)を参照してください。

  5. プロジェクトをコンパイルします。

  6. コマンド・プロンプトを開いて、プロジェクトのDebugフォルダに移動します。

  7. <client_project_name>.exeと入力して[Enter]を押します。

6.3.2 Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントの構成(メッセージ保護付きユーザー名トークン)

Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントを使用して、WS-Security 1.1標準に準拠したメッセージ保護付きユーザー名トークンを実装できます。

次のトピックでは、Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントを構成して、メッセージ保護付きユーザー名トークンを実装する方法を説明します。

6.3.2.1 Microsoft WCF/.NET 4.5 Webサービスの構成(メッセージ保護付きユーザー名トークン)

Microsoft WCF/.NET 4.5 Webサービスを構成して、OWSM 12cクライアントとの相互運用性のためのメッセージ保護付きユーザー名トークンを実装できます。

Microsoft WCF/.NET 4.5 Webサービスを構成するには、次のようにします。

  1. .NET Webサービスを作成します。

    1. 次の.NET Webサービスのサンプルに示すように、SymmetricSecurityBindingElementを使用して、Webサービスのカスタム・バインディングを作成します。この例は、セキュアな通信を有効化していない場合のWebサービスを示しています。

      static void Main(string[] args)
      {
          // Step 1 of the address configuration procedure: Create a URI to serve as the 
          // base address.        
          // Step 2 of the hosting procedure: Create ServiceHost
          string uri = "http://host:port/TEST/NetService";
          Uri baseAddress = new Uri(uri);
       
          ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);
       
          try
          {
              SymmetricSecurityBindingElement sm = 
                  SymmetricSecurityBindingElement.CreateUserNameForCertificateBindingElement();
              sm.DefaultAlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Basic128;
              sm.SetKeyDerivation(false);
              sm.SecurityHeaderLayout = SecurityHeaderLayout.Lax;
              sm.IncludeTimestamp = true;
              sm.KeyEntropyMode = SecurityKeyEntropyMode.CombinedEntropy;
              sm.MessageSecurityVersion = 
              MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005
              WSSecurityPolicy11BasicSecurityProfile10;
              sm.LocalClientSettings.CacheCookies = true;
              sm.LocalClientSettings.DetectReplays = true;
              sm.LocalClientSettings.ReplayCacheSize = 900000;
              sm.LocalClientSettings.MaxClockSkew = new TimeSpan(00, 05, 00);
              sm.LocalClientSettings.MaxCookieCachingTime = TimeSpan.MaxValue;
              sm.LocalClientSettings.ReplayWindow = new TimeSpan(00, 05, 00); ;
              sm.LocalClientSettings.SessionKeyRenewalInterval = new TimeSpan(10, 00, 00);
              sm.LocalClientSettings.SessionKeyRolloverInterval = new TimeSpan(00, 05, 00); ;
              sm.LocalClientSettings.ReconnectTransportOnFailure = true;
              sm.LocalClientSettings.TimestampValidityDuration = new TimeSpan(00, 05, 00); ;
              sm.LocalClientSettings.CookieRenewalThresholdPercentage = 60;
              sm.LocalServiceSettings.DetectReplays = false;
              sm.LocalServiceSettings.IssuedCookieLifetime = new TimeSpan(10, 00, 00);
              sm.LocalServiceSettings.MaxStatefulNegotiations = 128;
              sm.LocalServiceSettings.ReplayCacheSize = 900000;
              sm.LocalServiceSettings.MaxClockSkew = new TimeSpan(00, 05, 00);
              sm.LocalServiceSettings.NegotiationTimeout = new TimeSpan(00, 01, 00);
              sm.LocalServiceSettings.ReplayWindow = new TimeSpan(00, 05, 00);
              sm.LocalServiceSettings.InactivityTimeout = new TimeSpan(00, 02, 00);
              sm.LocalServiceSettings.SessionKeyRenewalInterval = new TimeSpan(15, 00, 00);
              sm.LocalServiceSettings.SessionKeyRolloverInterval = new TimeSpan(00, 05, 00);
              sm.LocalServiceSettings.ReconnectTransportOnFailure = true;
              sm.LocalServiceSettings.MaxPendingSessions = 128;
              sm.LocalServiceSettings.MaxCachedCookies = 1000;
              sm.LocalServiceSettings.TimestampValidityDuration = new TimeSpan(15, 00, 00);
              HttpTransportBindingElement hb = new HttpTransportBindingElement();
              hb.ManualAddressing = false;
              hb.MaxBufferPoolSize = 524288;
              hb.MaxReceivedMessageSize = 65536;
              hb.AllowCookies = false;
              hb.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
              hb.KeepAliveEnabled = true;
              hb.MaxBufferSize = 65536;
              hb.ProxyAuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
              hb.Realm = "";
              hb.TransferMode = System.ServiceModel.TransferMode.Buffered;
              hb.UnsafeConnectionNtlmAuthentication = false;
              hb.UseDefaultWebProxy = true;
              TextMessageEncodingBindingElement tb1 = new TextMessageEncodingBindingElement();
              tb1.MaxReadPoolSize = 64;
              tb1.MaxWritePoolSize = 16;
              tb1.MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap12;
              tb1.WriteEncoding = System.Text.Encoding.UTF8;
              CustomBinding binding1 = new CustomBinding(sm);
              binding1.Elements.Add(tb1);
              binding1.Elements.Add(hb);
              ServiceEndpoint ep = selfHost.AddServiceEndpoint(typeof(ICalculator), binding1,
                "CalculatorService");
       
              EndpointAddress myEndpointAdd = new EndpointAddress(                    
              new Uri(uri),
              EndpointIdentity.CreateDnsIdentity("WSMCert3"));
              ep.Address = myEndpointAdd;
       
              // Step 4 of the hosting procedure: Enable metadata exchange.
              ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
              smb.HttpGetEnabled = true;
              selfHost.Description.Behaviors.Add(smb);
              selfHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.CurrentUser, 
                 StoreName.My,
              X509FindType.FindBySubjectName, "WSMCert3");
              selfHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode =
                  X509CertificateValidationMode.PeerOrChainTrust;
              selfHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode =
                  UserNamePasswordValidationMode.Custom;
              CustomUserNameValidator cu = new CustomUserNameValidator();
              selfHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = cu;
              using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
              {
                  System.ServiceModel.Description.ServiceDescription svcDesc = selfHost.Description;
                  ServiceDebugBehavior svcDebug = svcDesc.Behaviors.Find<ServiceDebugBehavior>();
                  svcDebug.IncludeExceptionDetailInFaults = true;
              }
       
              // Step 5 of the hosting procedure: Start (and then stop) the service.
              selfHost.Open();
              Console.WriteLine("The Calculator service is ready.");
              Console.WriteLine("Press <ENTER> to terminate service.");
              Console.WriteLine();
              Console.ReadLine();
              selfHost.Close();
          }
          catch (CommunicationException ce)
          {
               Console.WriteLine("An exception occurred: {0}", ce.Message);
               selfHost.Abort();
           }
      }
      

    セキュアな通信を有効化するには、例のコードに次の調整を行います。

    1. 作成されたSymmetricSecurityBindingElement要素(sm)に基づいて、この要素をもう1つ作成します。たとえば次のようになります。

      SymmetricSecurityBindingElement scsm = SymmetricSecurityBindingElement.createSecureConversationBindingELement(sm, false)
    2. 新しいカスタム・バインディングを作成します。

      CustomBinding binding1 = new CustomBinding(scsm);

    詳細は、http://msdn.microsoft.com/en-us/library/ms731835.aspxの『How to: Define a Windows Communication Foundation Service Contract』を参照してください。

  2. 証明書ファイルを作成して、Webサービス・サーバー上のキーストアにインポートします。

    Microsoft Visual Studioを使用する場合、コマンドは次のようになります。

    makecert -r -pe -n "CN=wsmcert3" -sky exchange -ss my C:\wsmcert3.cer

    このコマンドにより、証明書が作成されてmmcにインポートされます。コマンドの結果が期待どおりにならない場合は、次のコマンド・シーケンスを試行してください。http://www.microsoft.com/whdc/devtools/WDK/default.mspxのWindows Developer Kit (WDK)をダウンロードする必要があります。

    makecert -r -pe -n "CN=wsmcert3" -sky exchange -ss my -sv wscert3.pvk C:\wsmcert3.cer
    pvk2pfx.exe -pvk wscert3.pvk -spc wsmcert3.cer -pfx PRF_WSMCert3.pfx -pi welcome1

    次に、PRF_WSMCert3.pfxをmmcにインポートします。

  3. keytoolコマンドを使用して、Webサービス・サーバー上に作成された証明書をクライアント・サーバーにインポートします。例:

    keytool -import -alias wsmcert3 -file C:\wsmcert3.cer -keystore <owsm_client_keystore>

    詳細は、「keytool - 鍵および証明書管理ツール」(http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html)を参照してください。

  4. Solutions Explorerで「Web service Solution」プロジェクトを右クリックし、「Open Folder In Windows Explorer」をクリックします。

  5. bin/Debugフォルダに移動します。

  6. <project>.exeファイルをダブルクリックします。このコマンドにより、指定したURLでWebサービスが実行されます。

6.3.2.2 Microsoft WCF/.NET 4.5 WebサービスのためのOWSM 12cクライアントの構成(メッセージ保護付きユーザー名トークン)

OWSM 12cクライアントを構成して、Microsoft WCF/.NET 4.5 Webサービスとの相互運用性のためのメッセージ保護付きユーザー名トークンを実装できます。

OWSM 12cクライアントを構成するには、次のようにします。

  1. JDeveloperを使用して、.NET Webサービスを使用するSOAコンポジットを作成します。

    詳細は、Oracle SOA SuiteでのSOAアプリケーションの開発のOracle JDeveloperでのSOAコンポジット・アプリケーションのデプロイに関する項を参照してください。

  2. JDeveloperで、.NETサービスのWSDLを使用してパートナ・リンクを作成します。

  3. oracle/wss11_username_token_with_message_protection_client_policyポリシーをWebサービス・クライアントにアタッチします。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

  4. csf-keyおよびkeystore.recipient.aliasの構成を指定します。

    この情報を指定するには、ポリシーをアタッチするときにポリシー構成をオーバーライドします。詳細は、次を参照してください。

    必ず、ステップ1でインポートした証明書(wsmcert3)の別名としてkeystore.recipient.aliasを構成してください。例:

    <wsp:PolicyReference 
          URI="oracle/wss11_username_token_with_message_protection_client_policy"
          orawsp:category="security" 
          orawsp:status="enabled"/>
       <property 
          name="csf-key" 
          type="xs:string" 
          many="false">
          basic.credentials
       </property>
       <property 
          name="keystore.recipient.alias" 
          type="xs:string" 
          many="false">
          wsmcert3
       </property>

    詳細は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のポリシー構成プロパティのオーバーライドに関する項を参照してください。

6.4 Microsoft WCF/.NET 4.5クライアント向けのSSL経由のユーザー名トークンの実装

(セキュアな通信を有効化している、および有効化していない) SSL経由のユーザー名トークン・ポリシーは、WS-Security 1.0および1.1標準に準拠します。このポリシーは、OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーとの間の相互運用性およびMicrosoft WCF/.NET 4.5サービス・ポリシーとOWSM 12cクライアント・ポリシーとの間の相互運用性を実現するために実装されます。

次のトピックでは、次の相互運用性シナリオにおいてSSL経由のユーザー名トークンを実装する方法について説明します。

6.4.1 OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントの構成(SSL経由のユーザー名トークン)

OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを使用して、セキュアな通信を有効化している、および有効化していないSSL経由のユーザー名トークンを実装できます。

次のトピックでは、SSL経由のユーザー名トークンを実装するために、OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを構成する方法を説明します。

6.4.1.1 Microsoft WCF/.NET 4.5クライアントのためのOWSM 12c Webサービスの構成(SSL経由のユーザー名トークン)

OWSM 12c Webサービスを構成して、Microsoft WCF/.NET 4.5クライアントとの相互運用性のためのSSL経由のユーザー名トークンを実装できます。

OWSM 12c Webサービスを構成するには、次のようにします。

  1. サーバーをSSL用に構成します。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のトランスポート・レベルのセキュリティ(SSL)の構成に関する説明を参照してください。

  2. OWSM Webサービスを作成します。

  3. セキュアな通信を有効化するかどうかに基づいて、使用するポリシーを選択します。

    セキュアな通信を有効化しない場合、次のいずれかのポリシーをアタッチします。

    oracle/wss_username_token_over_ssl_service_policy

    oracle/wss_saml_or_username_token_over_ssl_service_policy

    oracle/wss11_saml_or_username_token_with_message_protection_service_policy

    注意:

    セキュアな通信を有効化しない場合、Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きユーザー名トークン)の説明に従って、クライアントのestablishSecurityContextプロパティをfalseに設定する必要があります。

    詳細は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のポリシーのアタッチおよびOracle Web Services ManagerによるWebサービスの保護とポリシーの管理の事前定義済ポリシーを参照してください。

  4. 次のようにして、アドレッシングが使用されることを指定します。

    Oracle Infrastructure Webサービスの場合:

    次のポリシーをアタッチします。

    oracle/wssaddr_policy

    Java EE Webサービスの場合:

    Java EE Webサービスおよびクライアントでは、OWSMセキュリティ・ポリシーのサブセットのみがサポートされるため、oracle/wssaddr_policyをJava EE Webサービスにアタッチできません。かわりに、次の例に示すように、サービスのソース・コードで@Addressing注釈を使用して、アドレッシング情報を追加する必要があります。

    package oracle.wsm.qa.wls.service.soap12;
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebService;
    import javax.xml.ws.BindingType;
    import javax.xml.ws.soap.Addressing;
    import javax.xml.ws.soap.SOAPBinding;
    import weblogic.wsee.jws.jaxws.owsm.SecurityPolicy;
    @WebService
    @BindingType(SOAPBinding.SOAP12HTTP_BINDING)
    @Addressing(enabled=true)
    public class wss_username_token_over_ssl {
      public wss_username_token_over_ssl() {
        super();
      }
      @WebMethod
      public String sayHello(@WebParam(name = "arg0") String name){
        return "hello "+ name;
      }
    }

    詳細については、次の情報を参照してください。

    • 『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明

    • 『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のJava EE WebサービスおよびクライアントでサポートされているOWSMポリシーに関する項

    • 『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の設計時のJava EE Webサービスおよびクライアントへのポリシーのアタッチに関する項

6.4.1.2 Microsoft WCF/.NET 4.5クライアントの構成(SSL経由のユーザー名トークン)

Microsoft WCF/.NET 4.5クライアントを構成して、OWSM 12c Webサービスとの相互運用性のためのSSL経由のユーザー名トークンを実装できます。

Microsoft WCF/.NET 4.5クライアントを構成するには、次のようにします。

  1. WebサービスのWSDLを使用して、.NETクライアントを生成します。

    詳細は、http://msdn.microsoft.com/en-us/library/ms733133(v=vs.110).aspxの『How to: Create a Windows Communication Foundation Client』を参照してください。

  2. セキュアな通信を有効化しているかどうかに従って、app.configファイルのestablishSecurityContextプロパティを設定する必要があります。

    デフォルトでは、establishSecurityContexttrue (セキュアな通信を有効化している)に設定されます。セキュアな通信を有効化していない場合、establishSecurityContextfalseに設定します。

    例については、次のサンプル(太字斜体の行)を参照してください。

    <configuration>
      <system.serviceModel>
        <bindings> 
          <ws2007HttpBinding> 
            <binding name="wss_username_over_ssl_client"> 
              <security mode="TransportWithMessageCredential"> 
                <transport clientCredentialType="None" /> 
                <message clientCredentialType="UserName" 
                    negotiateServiceCredential="false" 
                    establishSecurityContext="true" />
                    <!-- extablishSecurityContext is true by default and therefore does not 
                    have to be specified to enable secure conversation.
                    Set establishSecurityContext to false if secure conversation is not enabled -->
              </security> 
            </binding> 
          </ws2007HttpBinding> 
        </bindings> 
        <client> 
          <endpoint address="https://10.244.167.70:7004/OWSMTestApp-Project1-context-root/wss_username_token_over_sslPort" 
              binding="ws2007HttpBinding" 
              bindingConfiguration="wss_username_over_ssl_client" 
              contract="ServiceReference1.wss_username_token_over_ssl" 
              name="wss_username_token_over_sslPort" /> 
        </client>
      </system.serviceModel>
    </configuration>
  3. プロジェクトをコンパイルします。

  4. コマンド・プロンプトを開いて、プロジェクトのDebugフォルダに移動します。

  5. <client_project_name>.exeと入力して[Enter]を押します。

6.4.2 Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントの構成(SSL経由のユーザー名トークン)

Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントを使用してSSL経由のユーザー名トークンを実装できます。

次のトピックでは、SSL経由のユーザー名トークンを実装するために、Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントを構成する方法を説明します。

6.4.2.1 Microsoft WCF/.NET 4.5 Webサービスの構成(SSL経由のユーザー名トークン)

Microsoft WCF/.NET 4.5 Webサービスを構成して、OWSM 12cクライアントとの相互運用性のためのSSL経由のユーザー名トークンを実装できます。

Microsoft WCF/.NET 4.5 Webサービスを構成するには、次のようにします。

  1. サーバーをSSL用に構成します。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のトランスポート・レベルのセキュリティ(SSL)の構成に関する説明を参照してください。

  2. .NET Webサービスを作成します。

    1. 次の.NET Webサービスの例に示すように、SecurityBindingElementを使用して、Webサービスのカスタム・バインディングを作成します。この例は、セキュアな通信を有効化していない場合のWebサービスを示しています。

      static void Main(string[] args)
      {
          // Step 1 of the address configuration procedure: Create a URI to serve as the 
          // base address.        
          // Step 2 of the hosting procedure: Create ServiceHost
          string uri = "http://host:port/TEST/NetService";
          Uri baseAddress = new Uri(uri);
       
          ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);
       
          try
          {
              SecurityBindingElement sm =
                  SecurityBindingElement.CreateUserNameOverTransportBindingElement();
              sm.DefaultAlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Basic128;
              sm.SetKeyDerivation(false);
              sm.SecurityHeaderLayout = SecurityHeaderLayout.Lax;
              sm.IncludeTimestamp = true;
              sm.KeyEntropyMode = SecurityKeyEntropyMode.CombinedEntropy;
              sm.MessageSecurityVersion = 
              MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005
              WSSecurityPolicy11BasicSecurityProfile10;
              sm.LocalClientSettings.CacheCookies = true;
              sm.LocalClientSettings.DetectReplays = true;
              sm.LocalClientSettings.ReplayCacheSize = 900000;
              sm.LocalClientSettings.MaxClockSkew = new TimeSpan(00, 05, 00);
              sm.LocalClientSettings.MaxCookieCachingTime = TimeSpan.MaxValue;
              sm.LocalClientSettings.ReplayWindow = new TimeSpan(00, 05, 00); ;
              sm.LocalClientSettings.SessionKeyRenewalInterval = new TimeSpan(10, 00, 00);
              sm.LocalClientSettings.SessionKeyRolloverInterval = new TimeSpan(00, 05, 00); ;
              sm.LocalClientSettings.ReconnectTransportOnFailure = true;
              sm.LocalClientSettings.TimestampValidityDuration = new TimeSpan(00, 05, 00); ;
              sm.LocalClientSettings.CookieRenewalThresholdPercentage = 60;
              sm.LocalServiceSettings.DetectReplays = false;
              sm.LocalServiceSettings.IssuedCookieLifetime = new TimeSpan(10, 00, 00);
              sm.LocalServiceSettings.MaxStatefulNegotiations = 128;
              sm.LocalServiceSettings.ReplayCacheSize = 900000;
              sm.LocalServiceSettings.MaxClockSkew = new TimeSpan(00, 05, 00);
              sm.LocalServiceSettings.NegotiationTimeout = new TimeSpan(00, 01, 00);
              sm.LocalServiceSettings.ReplayWindow = new TimeSpan(00, 05, 00);
              sm.LocalServiceSettings.InactivityTimeout = new TimeSpan(00, 02, 00);
              sm.LocalServiceSettings.SessionKeyRenewalInterval = new TimeSpan(15, 00, 00);
              sm.LocalServiceSettings.SessionKeyRolloverInterval = new TimeSpan(00, 05, 00);
              sm.LocalServiceSettings.ReconnectTransportOnFailure = true;
              sm.LocalServiceSettings.MaxPendingSessions = 128;
              sm.LocalServiceSettings.MaxCachedCookies = 1000;
              sm.LocalServiceSettings.TimestampValidityDuration = new TimeSpan(15, 00, 00);
              HttpTransportBindingElement hb = new HttpTransportBindingElement();
              hb.ManualAddressing = false;
              hb.MaxBufferPoolSize = 524288;
              hb.MaxReceivedMessageSize = 65536;
              hb.AllowCookies = false;
              hb.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
              hb.KeepAliveEnabled = true;
              hb.MaxBufferSize = 65536;
              hb.ProxyAuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
              hb.Realm = "";
              hb.TransferMode = System.ServiceModel.TransferMode.Buffered;
              hb.UnsafeConnectionNtlmAuthentication = false;
              hb.UseDefaultWebProxy = true;
              TextMessageEncodingBindingElement tb1 = new TextMessageEncodingBindingElement();
              tb1.MaxReadPoolSize = 64;
              tb1.MaxWritePoolSize = 16;
              tb1.MessageVersion = System.ServiceModel.Channels.MessageVersion.Soap12;
              tb1.WriteEncoding = System.Text.Encoding.UTF8;
              CustomBinding binding1 = new CustomBinding(sm);
              binding1.Elements.Add(tb1);
              binding1.Elements.Add(hb);
              ServiceEndpoint ep = selfHost.AddServiceEndpoint(typeof(ICalculator), binding1,
                "CalculatorService");
       
              EndpointAddress myEndpointAdd = new EndpointAddress(                    
              new Uri(uri),
              EndpointIdentity.CreateDnsIdentity("WSMCert3"));
              ep.Address = myEndpointAdd;
       
              // Step 4 of the hosting procedure: Enable metadata exchange.
              ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
              smb.HttpGetEnabled = true;
              selfHost.Description.Behaviors.Add(smb);
              selfHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.CurrentUser, 
                 StoreName.My,
              X509FindType.FindBySubjectName, "WSMCert3");
              selfHost.Credentials.ClientCertificate.Authentication.CertificateValidationMode =
                  X509CertificateValidationMode.PeerOrChainTrust;
              selfHost.Credentials.UserNameAuthentication.UserNamePasswordValidationMode =
                  UserNamePasswordValidationMode.Custom;
              CustomUserNameValidator cu = new CustomUserNameValidator();
              selfHost.Credentials.UserNameAuthentication.CustomUserNamePasswordValidator = cu;
              using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
              {
                  System.ServiceModel.Description.ServiceDescription svcDesc = selfHost.Description;
                  ServiceDebugBehavior svcDebug = svcDesc.Behaviors.Find<ServiceDebugBehavior>();
                  svcDebug.IncludeExceptionDetailInFaults = true;
              }
       
              // Step 5 of the hosting procedure: Start (and then stop) the service.
              selfHost.Open();
              Console.WriteLine("The Calculator service is ready.");
              Console.WriteLine("Press <ENTER> to terminate service.");
              Console.WriteLine();
              Console.ReadLine();
              selfHost.Close();
          }
          catch (CommunicationException ce)
          {
               Console.WriteLine("An exception occurred: {0}", ce.Message);
               selfHost.Abort();
           }
      }
      

    セキュアな通信を有効化するには、例のコードに次の調整を行います。

    1. 作成されたSecurityBindingElement要素(sm)に基づいて、この要素をもう1つ作成します。たとえば次のようになります。

      SecurityBindingElement scsm = SecurityBindingElement.createSecureConversationBindingElement(sm)
    2. scsmを使用してカスタム・バインディングを作成します。

      CustomBinding binding1 = new CustomBinding(scsm);

    詳細は、http://msdn.microsoft.com/en-us/library/ms731835.aspxの『How to: Define a Windows Communication Foundation Service Contract』を参照してください。

6.4.2.2 Microsoft WCF/.NET 4.5クライアントのためのOWSM 12cクライアントの構成(SSL経由のユーザー名トークン)

OWSM 12cクライアントを構成して、Microsoft WCF/.NET 4.5 Webサービスとの相互運用性のためのSSL経由のユーザー名トークンを実装できます。

OWSM 12cクライアントを構成するには、次のようにします。

  1. WebサービスのWSDLを使用して、OWSMクライアントを生成します。

    詳細は、SOA Suiteの開発者ガイドを参照してください。

  2. 次のポリシーをクライアントにアタッチします。

    oracle/wss_username_token_over_ssl_client_policy

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

6.5 Microsoft WCF/.NET 4.5クライアント向けのメッセージ保護付き相互認証(WS-Security 1.1)の実装

メッセージ保護付き相互認証ポリシーは、WS-Security 1.1標準に準拠します。このポリシーは、OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーとの間の相互運用性およびMicrosoft WCF/.NET 4.5サービス・ポリシーとOWSM 12cクライアント・ポリシーとの間の相互運用性を実現するために実装されます。

次のトピックでは、様々な相互運用性シナリオにおいてメッセージ保護付相互認証を実装する方法について説明します。

前述のいずれかのシナリオにおいてWebサービスおよびクライアントを構成する前に、メッセージ保護付き相互認証のための構成前提条件の実行の手順に従います。

6.5.1 メッセージ保護付き相互認証のための構成前提条件の実行

OWSM 12cとMicrosoft WCF/.NET 4.5との間の相互運用性のために、WS-Security 1.1標準に準拠したメッセージ保護付き相互認証を実装する前に、多くの高度なタスクを完了する必要があります。

相互運用性のための前提条件を構成するには、次のようにします。

  1. 次のコマンドを使用して、サービス側のキーストアからX.509証明書ファイルを.cerファイル(alice.cerなど)にエクスポートします。
    keytool -export -alias alice -file C:\alice.cer -keystore default-keystore.jks

    詳細は、「keytool - 鍵および証明書管理ツール」(http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html)を参照してください。

  2. Microsoft Management Console (mmc)を使用して、(前にエクスポートした)証明書ファイルをクライアント・サーバー上のキーストアにインポートします。具体的な手順については、Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きユーザー名トークン)のステップ1を参照してください。

    詳細は、http://msdn.microsoft.com/en-us/library/ms788967.aspxの『How to: View Certificates with the MMC Snap-in』を参照してください。

6.5.2 OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントの構成(メッセージ保護付き相互認証)

OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを使用して、WS-Security 1.1標準に準拠したメッセージ保護付き相互認証を実装できます。

次のトピックでは、メッセージ保護付き相互認証を実装するために、OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを構成する方法を説明します。

6.5.2.1 Microsoft WCF/.NET 4.5クライアントのためのOWSM 12c Webサービスの構成(メッセージ保護付き相互認証)

OWSM 12c Webサービスを構成して、Microsoft WCF/.NET 4.5クライアントとの相互運用性のためのメッセージ保護付き相互認証を実装できます。

OWSM 12c Webサービスを構成するには、次のようにします。

  1. SOAP 1.2準拠のSOAコンポジットを作成してデプロイします。

  2. Fusion Middleware Controlを使用して、次のポリシーをWebサービスにアタッチします。

    oracle/wss11_x509_token_with_message_protection_service_policy

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

  3. wss11_x509_token_with_message_protection_service_policy_netをエクスポートします。encrypted="true""false"に変更し、再びインポートします。

    <orasp:x509-token 
       orasp:enc-key-ref-mech="thumbprint" 
       orasp:is-encrypted="false" 
       orasp:is-signed="false" 
       orasp:sign-key-ref-mech="direct"/>

    詳細は、次のリンクを参照してください。

    • 『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーのエクスポートに関する項。

    • 『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーのインポートに関する項。

  4. ポリシーをWebサービスにアタッチします。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

  5. 次のポリシーをアタッチします。

    oracle/wsaddr_policy

6.5.2.2 Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付き相互認証)

Microsoft WCF/.NET 4.5クライアントを構成して、OWSM 12c Webサービスとの相互運用性のためのメッセージ保護付き相互認証を実装できます。

Microsoft WCF/.NET 4.5クライアントを構成するには、次のようにします。

  1. Microsoft SvcUtilユーティリティを使用して、デプロイされたWebサービスからクライアント・プロキシ(「クライアント・プログラム」を参照)および構成ファイルを作成します。

    次のクライアント・プログラムのサンプルを参照してください。

     namespace IO_NET10_client
    {
        class Program
        {
            static void Main(string[] args)
            {
               
                BPELProcess1Client client = new BPELProcess1Client();
             
                client.ClientCredentials.ClientCertificate.SetCertificate(
                        StoreLocation.CurrentUser,
                        StoreName.My,
                        X509FindType.FindBySubjectName, "WSMCert3");
                         
                 client.ClientCredentials.ServiceCertificate.SetDefaultCertificate(
                           StoreLocation.CurrentUser,
                           StoreName.My,
                        X509FindType.FindBySubjectName, "Alice");
     
                process proc = new process();
                proc.input = "Test wss11_x509_token_with_message_protection_policy - ";
                Console.WriteLine(proc.input);
                processResponse response = client.process(proc);
               
                Console.WriteLine(response.result.ToString());
                Console.WriteLine("Press <ENTER> to terminate Client.");
                Console.ReadLine();
              }
        }
    }

    詳細は、http://msdn.microsoft.com/en-us/library/aa347733%28v=vs.110%29.aspxを参照してください。

  2. 次のサンプルに示すように、app.config構成ファイルを作成します。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.serviceModel>
        <behaviors>
          <endpointBehaviors>
            <behavior name="secureBehaviour">
              <clientCredentials>
                <serviceCertificate>
                  <defaultCertificate findValue="<certificate_cn>"
                                      storeLocation="CurrentUser"
                                      storeName="My"
                                      x509FindType="FindBySubjectName"/>
                </serviceCertificate>
              </clientCredentials>
            </behavior>
          </endpointBehaviors>
        </behaviors>
          <bindings> 
            <ws2007HttpBinding> 
              <binding name="wss_username_over_ssl_client"> 
                <security mode="TransportWithMessageCredential"> 
                <transport clientCredentialType="None" /> 
                <message clientCredentialType="UserName" 
                    negotiateServiceCredential="false" 
                    establishSecurityContext="false" /> 
                </security> 
              </binding> 
            </ws2007HttpBinding> 
         </bindings> 
            <client>
              <endpoint address="http://<server>:<port>//MyWebService1SoapHttpPort"
                    binding="ws2007HttpBinding"
                    contract="MyWebService1" 
                    name="MyWebService1SoapHttpPort"
                    behaviorConfiguration="secureBehaviour" >
                <identity>
                  <dns value="<certificate_cn>"/>
                </identity>
              </endpoint>
            </client>
        </system.serviceModel>
    </configuration>
    
  3. プロジェクトをコンパイルします。

  4. コマンド・プロンプトを開いて、プロジェクトのDebugフォルダに移動します。

  5. <client_project_name>.exeと入力して[Enter]を押します。

6.5.3 Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントの構成(メッセージ保護付き相互認証)

Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントを使用して、WS-Security 1.1標準に準拠した相互認証を実装できます。

Microsoft WCF/.NET 4.5 WebサービスおよびOWSM 12cクライアントを構成するには、次のようにします。

  1. .NET Webサービスを作成します。

    詳細は、http://msdn.microsoft.com/en-us/library/ms731835%28v=vs.90%29.aspxの『How to: Define a Windows Communication Foundation Service Contract』を参照してください。

  2. SymmetricSecurityBindingElementを使用して、Webサービスのカスタム・バインディングを作成します。

    SymmetricSecurityBindingElementオブジェクトのサンプルを次に示します。

    SymmetricSecurityBindingElement sm =
    (SymmetricSecurityBindingElement)SecurityBindingElement.CreateMutualCertificate
    BindingElement(); 
    sm.DefaultAlgorithmSuite =
    System.ServiceModel.Security.SecurityAlgorithmSuite.Basic128;sm.SetKeyDerivati
    on(false);
    sm.SecurityHeaderLayout = SecurityHeaderLayout.Lax;sm.IncludeTimestamp =
    true;
    sm.KeyEntropyMode = SecurityKeyEntropyMode.CombinedEntropy; 
    sm.MessageProtectionOrder =
    MessageProtectionOrder.SignBeforeEncrypt;sm.MessageSecurityVersion =
    MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversation
    February2005WSSecurityPolicy11BasicSecurityProfile10;
    sm.RequireSignatureConfirmation =
    true;

    詳細は、http://msdn.microsoft.com/en-us/library/ms730305%28v=vs.90%29.aspxの『How to: Create a Custom Binding Using the SecurityBindingElement』を参照してください。

  3. アプリケーションをデプロイします。
  4. OWSM 12cクライアントを構成するには、JDeveloperを使用して、.NET Webサービスを使用するSOAコンポジットを作成します。

    詳細は、SOA Suiteの開発者ガイドを参照してください。

  5. JDeveloperで、.NETサービスのWSDLを使用してパートナ・リンクを作成し、次のようにインポートを追加します。
    <wsdl:import namespace="<namespace>" location="<WSDL location>"/> 
    
  6. Fusion Middleware Controlで、次のポリシーをWebサービス・クライアントにアタッチします。

    oracle/wss11_x509_token_with_message_protection_client_policy

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

  7. keystore.recipient.aliasの構成を指定します。

    この情報を指定するには、ポリシーをアタッチするときにポリシー構成をオーバーライドします。

    必ず、ステップ4でインポートした証明書(wsmcert3)の別名としてkeystore.recipient.aliasを構成してください。

    詳細は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のポリシー構成プロパティのオーバーライドに関する項を参照してください。

  8. クライアントからWebサービス・メソッドを起動します。

6.6 Microsoft WCF/.NET 4.5クライアント向けのメッセージ保護付きKerberosの実装

メッセージ保護付きKerberosポリシーは、WS-Security 1.1標準に準拠します。このポリシーは、OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーとの間の相互運用性を実現するために実装されます。

次のトピックでは、OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを構成してメッセージ保護付きKerberosを実装する方法を説明します。

6.6.1 メッセージ保護付きKerberosの相互運用性のための前提条件タスクの実行

OWSM 12c WebサービスとMicrosoft WCF/.NET 4.5クライアントとの間の相互運用性のために、メッセージ保護付きKerberosを実装する前に、多くの高度なタスクを完了する必要があります。

相互運用性のための前提条件を構成するには、次のようにします。

  1. 鍵配布センター(KDC)およびアクティブ・ディレクトリ(AD)を構成します。

    詳細は、http://download.oracle.com/docs/cd/E19316-01/820-3746/gisdn/index.htmlのWindowsのアクティブ・ディレクトリおよびドメイン・コントローラの構成方法(ドメイン・コントローラがKDCの役割を果たします)に関する項を参照してください。

  2. 次のKerberos構成ファイルのサンプルに示すように、c:\winntにあるKerberos構成ファイルkrb5.confを設定します。
    [logging]
    default = c:\log\krb5libs.log
    kdc = c:\log\krb5kdc.log
    admin_server = c:\log\kadmind.log
    [libdefaults]
    default_realm = MYCOMPANY.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = false
    default_tkt_enctypes = rc4-hmac
    default_tgs_enctypes = rc4-hmac
    permitted_enctypes = rc4-hmac
    kdc = hostname
    [realms]
    MYCOMPANY.LOCAL =
    { kdc = host:port  admin_server = host:port
      default_domain = <domainname>
    }
     [domain_realm]
    .<domainname> = MYCOMPANY.LOCAL
     <domainname> = MYCOMPANY.LOCAL
    [appdefaults]
    pam =
    {   debug = false  ticket_lifetime = 36000  renew_lifetime = 36000  forwardable =
     true  krb4_convert = false }

6.6.2 OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きKerberos)

OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを使用してメッセージ保護付きKerberosを実装できます。

次のトピックでは、OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを構成してメッセージ保護付きKerberosを実装する方法を説明します。

6.6.2.1 Microsoft WCF/.NET 4.5クライアントのためのOWSM 12c Webサービスの構成(メッセージ保護付きKerberos)

OWSM 12c Webサービスを構成して、Microsoft WCF/.NET 4.5クライアントとの相互運用性のためのメッセージ保護付きKerberosを実装できます。

OWSM 12c Webサービスを構成するには、次のようにします。

  1. Webサービス・アプリケーションを作成してデプロイします。

    詳細は、『Webサービスの管理』のWebサービス・アプリケーションのデプロイに関する説明を参照してください。

  2. oracle/wss11_kerberos_token_with_message_protection_service_policyポリシーのクローンを作成します。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーのクローニングに関する説明を参照してください。

  3. ポリシー設定を編集して、アルゴリズム・スイートをBasic128Rsa15に設定します。

  4. ポリシーをWebサービスにアタッチします。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

6.6.2.2 Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きKerberos)

Microsoft WCF/.NET 4.5クライアントを構成して、OWSM 12c Webサービスとの相互運用性のためのメッセージ保護付きKerberosを実装できます。

Microsoft WCF/.NET 4.5クライアントを構成するには、次のようにします。

  1. ADにユーザーを作成して、Webサービスがホストされるホストを指定します。デフォルトでは、ユーザー・アカウントはRC4-HMAC暗号を使用して作成されます。たとえば、ユーザー名付きのfoobarは、HTTP/foobarとなります。

  2. 次のようにktpassコマンドを使用して、KDCが実行されているWindowsのADマシンにkeytabファイルを作成します。

    ktpass -princ HTTP/foobar@MYCOMPANY.LOCAL -pass Oracle123 -mapuser foobar -out foobar.keytab -ptype KRB5_NT_PRINCIPAL -kvno 4

    HTTP/foobarは、ユーザー「foobar」にマッピングされるSPNです。「/desonly」を指定したり、「/cyrpto」に「des-cbc-crc」は指定しないでください。MYCOMPANY.LOCALはKDCのデフォルトのレルムで、krb5.iniファイルで使用可能です。passに指定するパスワードは、ユーザーの作成時のパスワードと一致している必要があります。

    FTPのバイナリ・モードを使用して、生成したキータブ・ファイルをSOAコンポジットWebサービスがホストされているマシンに移動します。

  3. setSpn -L foobar

    setSpn -A HTTP/foobar@MYCOMPANY.LOCAL foobar

    ユーザーにマッピングするSPNは1つにしてください。複数のSPNがユーザーにマッピングされている場合は、setSpn -D <spname> <username>コマンドを使用して削除します。

    次のようにsetSpnコマンドを使用して、サービス・プリンシパルをユーザーにマッピングします。

    setSpn -A HTTP/foobar@MYCOMPANY.LOCAL foobar

    setSpn -L foobar

    ユーザーにマッピングするSPNは1つにしてください。複数のSPNがユーザーにマッピングされている場合は、setSpn -D <spname> <username>コマンドを使用して削除します。

  4. Microsoft SvcUtilユーティリティを使用して、デプロイされたWebサービスからクライアント・プロキシおよび構成ファイルを作成します。

    Windowsのエクスプローラでアプリケーションを右クリックして、generatedProxy.csファイルおよびapp.configファイルを追加し、既存の項目を追加を選択します。

    app.configのendpoint要素に、「HTTP/foobar@MYCOMPANY.LOCAL」というサービス・プリンシパル名(keytabの作成で使用したものと同じ値)の「identity」要素を追加します。

    <client>
            <endpoint address="http://host:port/HelloServicePort"
                binding="customBinding" bindingConfiguration="NewHelloSoap12HttpPortBinding"
                contract="NewHello" name="HelloServicePort">
            <identity>
              <servicePrincipalName value ="HTTP/foobar@MYCOMPANY.LOCAL"/>
            </identity>
            </endpoint>
           
          </client>

    次のカスタム・バインディングのサンプルを参照してください。

    <customBinding>
      <binding name="NewHelloSoap12HttpPortBinding">
          <!--Added by User: Begin-->
          <security defaultAlgorithmSuite="Basic128"
            authenticationMode="Kerberos"
            requireDerivedKeys="false" securityHeaderLayout="Lax"
            includeTimestamp="true"
            keyEntropyMode="CombinedEntropy"
            messageProtectionOrder="SignBeforeEncrypt"
            messageSecurityVersion="WSSecurity11WSTrustFebruary2005
            WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurity
              Profile10" 
            requireSignatureConfirmation="true">
          <localClientSettings cacheCookies="true" detectReplays="true"
              replayCacheSize="900000" maxClockSkew="00:05:00"
              maxCookieCachingTime="Infinite"
              replayWindow="00:05:00"
              sessionKeyRenewalInterval="10:00:00"
              sessionKeyRolloverInterval="00:05:00"
              reconnectTransportOnFailure="true"
              timestampValidityDuration="00:05:00"
              cookieRenewalThresholdPercentage="60" />
                    <localServiceSettings detectReplays="true"
              issuedCookieLifetime="10:00:00"
              maxStatefulNegotiations="128" replayCacheSize="900000"
              maxClockSkew="00:05:00"
              negotiationTimeout="00:01:00" replayWindow="00:05:00"
              inactivityTimeout="00:02:00"
              sessionKeyRenewalInterval="15:00:00"
              sessionKeyRolloverInterval="00:05:00"
              reconnectTransportOnFailure="true"
              maxPendingSessions="128"
              maxCachedCookies="1000"
              timestampValidityDuration="00:05:00" />
                      <secureConversationBootstrap />
                    </security>
                  <!--Added by User: End-->
                    <textMessageEncoding maxReadPoolSize="64"
                       maxWritePoolSize="16"
                       messageVersion="Soap12" writeEncoding="utf-8">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192"
                       maxArrayLength="16384"
                       maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    </textMessageEncoding>
                  <!--Added by User: Begin-->
                  <httpTransport manualAddressing="false"
                       maxBufferPoolSize="524288"
                       maxReceivedMessageSize="65536" allowCookies="false"
                       authenticationScheme="Anonymous"
                       bypassProxyOnLocal="false"
                       hostNameComparisonMode="StrongWildcard"
                       keepAliveEnabled="true" maxBufferSize="65536"
                       proxyAuthenticationScheme="Anonymous"
                       realm="" transferMode="Buffered"
                       unsafeConnectionNtlmAuthentication="false"
                       useDefaultWebProxy="true" />
                    <!--Added by User: End-->
               </binding>
    </customBinding>
    

    詳細は、http://msdn.microsoft.com/en-us/library/aa347733%28v=vs.110%29.aspxを参照してください。

  5. クライアント・プログラムを実行します。

6.7 Microsoft WCF/.NET 4.5クライアント向けの導出キーを使用したメッセージ保護付きKerberosの実装

導出キーを使用したメッセージ保護付きKerberosポリシーは、WS-Security 1.1標準に準拠します。このポリシーは、OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーとの間の相互運用性を実現するために実装されます。

次のトピックでは、OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを構成して、メッセージ保護付きKerberosを導出キーを使用して実装する方法を説明します。

6.7.1 導出キーを使用したメッセージ保護付きKerberosの構成前提条件タスクの実行

OWSM 12c WebサービスとMicrosoft WCF/.NET 4.5クライアントとの間の相互運用性のために、導出キーを使用してメッセージ保護付きKerberosを実装する前に、多くの高度なタスクを完了する必要があります。

相互運用性のための前提条件を構成するには、次のようにします。

  1. 鍵配布センター(KDC)およびアクティブ・ディレクトリ(AD)を構成します。

    詳細は、以下のトピックを参照してください。

  2. 次のKerberos構成ファイルのサンプルに示すように、c:\winntにあるKerberos構成ファイルkrb5.confを設定します。
    [logging]
    default = c:\log\krb5libs.log
    kdc = c:\log\krb5kdc.log
    admin_server = c:\log\kadmind.log
    [libdefaults]
    default_realm = MYCOMPANY.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = false
    default_tkt_enctypes = rc4-hmac
    default_tgs_enctypes = rc4-hmac
    permitted_enctypes = rc4-hmac
    kdc = hostname
    [realms]
    MYCOMPANY.LOCAL =
    { kdc = host:port  admin_server = host:port
      default_domain = <domainname>
    }
     [domain_realm]
    .<domainname> = MYCOMPANY.LOCAL
     <domainname> = MYCOMPANY.LOCAL
    [appdefaults]
    pam =
    {   debug = false  ticket_lifetime = 36000  renew_lifetime = 36000  forwardable =
     true  krb4_convert = false }

6.7.2 OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントの構成(導出キーを使用したKerberosメッセージ)

OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを使用して、導出キーを使用したメッセージ保護付きKerberosを実装できます。

次のトピックでは、メッセージ保護付きKerberosを導出キーを使用して実装するために、OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを構成する方法を説明します。

6.7.2.1 Microsoft WCF/.NET 4.5クライアントのためのOWSM 12c Webサービスの構成(導出キーを使用したメッセージ保護付きKerberos)

OWSM 12c Webサービスを構成して、Microsoft WCF/.NET 4.5クライアントとの相互運用性のための、導出キーを使用したメッセージ保護付きKerberosを実装できます。

OWSM 12c Webサービスを構成するには、次のようにします。

  1. Webサービス・アプリケーションを作成してデプロイします。

    詳細は、『Webサービスの管理』のWebサービス・アプリケーションのデプロイに関する説明を参照してください。

  2. wss11_kerberos_token_with_message_protection_basic128_service_policyポリシーのクローンを作成します。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーのクローニングに関する説明を参照してください。

  3. ポリシー設定を編集して、「Derived Keys」オプションを有効にします。

  4. ポリシーをWebサービスにアタッチします。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明を参照してください。

6.7.2.2 Microsoft WCF/.NET 4.5クライアントの構成(導出キーを使用したメッセージ保護付きKerberos)

Microsoft WCF/.NET 4.5クライアントを構成して、OWSM 12c Webサービスとの相互運用性のための、導出キーを使用したメッセージ保護付きKerberosを実装できます。

Microsoft WCF/.NET 4.5クライアントを構成するには、次のようにします。

  1. ADにユーザーを作成して、Webサービスがホストされるホストを指定します。デフォルトでは、ユーザー・アカウントはRC4-HMAC暗号を使用して作成されます。たとえば、ユーザー名をfoobarとすると、HTTP/foobarとなります。

  2. 次のようにktpassコマンドを使用して、KDCが実行されているWindowsのADマシンにkeytabファイルを作成します。

    ktpass -princ HTTP/foobar@MYCOMPANY.LOCAL -pass Oracle123 -mapuser foobar -out foobar.keytab -ptype KRB5_NT_PRINCIPAL -kvno 4

    HTTP/foobarがユーザー「foobar」にマッピングされるSPNです。「/desonly」を指定したり、「/cyrpto」に「des-cbc-crc」は指定しないでください。MYCOMPANY.LOCALはKDCのデフォルトのレルムで、krb5.iniファイルで使用可能です。passに指定するパスワードは、ユーザーの作成時のパスワードと一致している必要があります。

    FTPのバイナリ・モードを使用して、生成したキータブ・ファイルをSOAコンポジットWebサービスがホストされているマシンに移動します。

  3. 次のようにsetSpnコマンドを使用して、サービス・プリンシパルをユーザーにマッピングします。

    setSpn -A HTTP/foobar@MYCOMPANY.LOCAL foobar

    setSpn -L foobar

    ユーザーにマッピングするSPNは1つにしてください。複数のSPNがユーザーにマッピングされている場合は、setSpn -D <spname> <username>コマンドを使用して削除します。

  4. Microsoft SvcUtilユーティリティを使用して、デプロイされたWebサービスからクライアント・プロキシおよび構成ファイルを作成します。

    Windowsのエクスプローラでアプリケーションを右クリックして、generatedProxy.csファイルおよびapp.configファイルを追加し、既存の項目を追加を選択します。

    app.configのendpoint要素に、「HTTP/foobar@MYCOMPANY.LOCAL」というサービス・プリンシパル名(keytabの作成で使用したものと同じ値)の「identity」要素を追加します。

    <client>
            <endpoint address="http://host:port/HelloServicePort"
                binding="customBinding" bindingConfiguration="NewHelloSoap12HttpPortBinding"
                contract="NewHello" name="HelloServicePort">
            <identity>
              <servicePrincipalName value ="HTTP/foobar@MYCOMPANY.LOCAL"/>
            </identity>
            </endpoint>
          </client>

    次のカスタム・バインディングのサンプルを参照してください。

    <customBinding>
      <binding name="NewHelloSoap12HttpPortBinding">
        <!--Added by User: Begin-->
        <security defaultAlgorithmSuite="Basic128"
          authenticationMode="Kerberos"
          requireDerivedKeys="true" securityHeaderLayout="Lax"
          includeTimestamp="true"
          keyEntropyMode="CombinedEntropy"
          messageProtectionOrder="SignBeforeEncrypt"
          messageSecurityVersion="WSSecurity11WSTrustFebruary2005
          WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurity
          Profile10" 
          requireSignatureConfirmation="true">
        <localClientSettings cacheCookies="true" detectReplays="true"
            replayCacheSize="900000" maxClockSkew="00:05:00"
            maxCookieCachingTime="Infinite"
            replayWindow="00:05:00"
            sessionKeyRenewalInterval="10:00:00"
            sessionKeyRolloverInterval="00:05:00"
            reconnectTransportOnFailure="true"
            timestampValidityDuration="00:05:00"
            cookieRenewalThresholdPercentage="60" />
          <localServiceSettings detectReplays="true"
            issuedCookieLifetime="10:00:00"
            maxStatefulNegotiations="128" replayCacheSize="900000"
            maxClockSkew="00:05:00"
            negotiationTimeout="00:01:00" replayWindow="00:05:00"
            inactivityTimeout="00:02:00"
            sessionKeyRenewalInterval="15:00:00"
            sessionKeyRolloverInterval="00:05:00"
            reconnectTransportOnFailure="true"
            maxPendingSessions="128"
            maxCachedCookies="1000"
            timestampValidityDuration="00:05:00" />
          <secureConversationBootstrap />
        </security>
      <!--Added by User: End-->
          <textMessageEncoding maxReadPoolSize="64"
            maxWritePoolSize="16"
            messageVersion="Soap12" writeEncoding="utf-8">
              <readerQuotas maxDepth="32" maxStringContentLength="8192"
                maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          </textMessageEncoding>
              <!--Added by User: Begin-->
          <httpTransport manualAddressing="false"
            maxBufferPoolSize="524288"
            maxReceivedMessageSize="65536" allowCookies="false"
            authenticationScheme="Anonymous"
            bypassProxyOnLocal="false"
            hostNameComparisonMode="StrongWildcard"
            keepAliveEnabled="true" maxBufferSize="65536"
            proxyAuthenticationScheme="Anonymous"
            realm="" transferMode="Buffered"
            unsafeConnectionNtlmAuthentication="false"
            useDefaultWebProxy="true" />
          <!--Added by User: End-->
      </binding>
    </customBinding>
    
  5. クライアント・プログラムを実行します。

6.8 Microsoft WCF/.NET 4.5クライアント向けのSPNEGOネゴシエーションによるKerberosの実装

SPNEGOネゴシエーションによるKerberosポリシーは、WS-Security 1.1標準に準拠します。このポリシーは、OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーとの間の相互運用性を実現するために実装されます。

次のトピックでは、SPNEGOネゴシエーションによるKerberosを実装するために、OWSM 12c WebサービスおよびMicrosoft WCF/.NET 4.5クライアントを構成する方法を示します。

6.8.1 Microsoft WCF/.NET 4.5クライアントのためのOWSM 12c Webサービスの構成(SPNEGOネゴシエーションによるKerberos)

OWSM 12c Webサービスを構成して、Microsoft WCF/.NET 4.5クライアントとの相互運用性のためのSPNEGOネゴシエーションによるKerberosを実装できます。

OWSM 12c Webサービスを構成するには、次のようにします。

  1. Webサービス・アプリケーションを作成してデプロイします。

    詳細は、『Webサービスの管理』のWebサービス・アプリケーションのデプロイに関する説明を参照してください。

  2. http_spnego_token_service_templateアサーション・テンプレートを使用するポリシーを作成します。

    詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の「SPNEGOネゴシエーションによるKerberosの構成」を参照してください。

  3. ポリシーをWebサービスにアタッチします。

6.8.2 Microsoft WCF/.NET 4.5クライアントの構成(SPNEGOネゴシエーションによるKerberos)

Microsoft WCF/.NET 4.5クライアントを構成して、OWSM 12c Webサービスとの相互運用性のためのSPNEGOネゴシエーションによるKerberosを実装できます。

Microsoft WCF/.NET 4.5クライアントを構成するには、次のようにします。

  1. Microsoft SvcUtilユーティリティを使用して、デプロイされたWebサービスからクライアント・プロキシおよび構成ファイルを作成します。

    詳細は、http://msdn.microsoft.com/en-us/library/aa347733%28v=vs.110%29.aspxを参照してください。

  2. Windowsのエクスプローラでアプリケーションを右クリックして、generatedProxy.csファイルおよびapp.configファイルを追加し、既存の項目を追加を選択します。

  3. 次のサンプルに示すように、app.configファイルを編集します。

    <configuration>
      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BPELProcessBinding">
              <security mode= "TransportCredentialOnly">
                <transport clientCredentialType="Windows"/>
              </security>
            </binding>
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint 
              address="http://host:port/soa-infra/services/default/SOAProxy/bpelpro
    cess_client_ep"
              binding="basicHttpBinding" 
              bindingConfiguration="BPELProcessBinding"
              contract="BPELProcess" name="BPELProcess_pt" 
            <identity>
              <servicePrincipalName value ="HTTP/host:port@MYCOMPANY.LOCAL" />
            </identity>
          </endpoint>
        </client>
      </system.serviceModel>
    </configuration>
    

    このリストでは、エンドポイント要素のcontractおよびname属性の値は、generatedProxy.csファイルから取得されます。

  4. クライアントをコンパイルします。

  5. デプロイしたWebサービスにOWSMポリシーをアタッチした後、クライアントを実行します。

6.9 Microsoft WCF/.NET 4.5クライアント向けのSPNEGOネゴシエーションおよび資格証明の委任によるKerberosの実装

SPNEGOネゴシエーションおよび資格証明の委任によるKerberosポリシーは、WS-Security 1.1標準に準拠します。このポリシーは、OWSM 12cサービス・ポリシーとMicrosoft WCF/.NET 4.5クライアント・ポリシーとの間の相互運用性を実現するために実装されます。

OWSM 12c Webサービスを構成するには、次のようにします。

  1. Webサービス・アプリケーションを作成してデプロイします。

    詳細は、『Webサービスの管理』のWebサービス・アプリケーションのデプロイに関する説明を参照してください。

  2. http_spnego_token_service_templateアサーション・テンプレートを使用するポリシーを作成します。
  3. ポリシーをWebサービスにアタッチします。
  4. credential.delegation構成設定の値をtrueに設定します。

    この情報を指定するには、ポリシーをアタッチするときにポリシー構成をオーバーライドします。

    詳細は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のポリシー構成プロパティのオーバーライドに関する項を参照してください。

  5. Microsoft WCF/.NET 4.5クライアントを構成するには、Microsoft SvcUtilユーティリティを使用して、デプロイされたWebサービスからクライアント・プロキシおよび構成ファイルを作成します。
  6. Windowsのエクスプローラでアプリケーションを右クリックして、generatedProxy.csファイルおよびapp.configファイルを追加し、既存の項目を追加を選択します。
  7. 次のサンプルに示すように、app.configファイルを編集します。
    <configuration>
      <system.serviceModel>
        <bindings>
          <basicHttpBinding>
            <binding name="BPELProcess1Binding">
              <security mode= "TransportCredentialOnly">
                <transport clientCredentialType="Windows"/>
              </security>
            </binding>
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint 
              address="http://host:port/soa-infra/services/default/SOAProxy/bpelpro
    cess1_client_ep"
              binding="basicHttpBinding" 
              bindingConfiguration="BPELProcess1Binding"
              contract="BPELProcess1" name="BPELProcess1_pt" 
              behaviorConfiguration="CredentialDelegation">
            <identity>
              <servicePrincipalName value ="HTTP/host:port@MYCOMPANY.LOCAL" />
            </identity>
          </endpoint>
        </client>
        <behaviors>
          <endpointBehaviors>
            <behavior name="CredentialDelegation">
              <clientCredentials>
                <windows allowedImpersonationLevel="Delegation"
                  allowNtlm="false"/>
              </clientCredentials>
            </behavior>
          </endpointBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>
    

    例では、エンドポイント要素のcontractおよびname属性の値は、generatedProxy.csファイルから取得されます。

  8. クライアントをコンパイルします。
  9. デプロイしたWebサービスにOWSMポリシーをアタッチした後、クライアントを実行します。

6.10 Microsoft Active Directory Federation Services 2.0 (ADFS 2.0) STSを使用するWCF/.NET 4.5クライアント

セキュリティ・ポリシーを使用して、Microsoft Active Directory Federation Services 2.0 (ADFS 2.0)セキュア・トークン・サービス(STS)を使用するWCF/.NET 4.5クライアントを保護できます。

次のポリシーが、ADFS 2.0を使用するWCF/.NET 4.5クライアントの保護に使用されます。

  • oracle/wss_sts_issued_saml_bearer_token_over_ssl_service_policy

  • oracle/wss_saml_token_bearer_over_ssl_service_policy

  • oracle/wss11_saml_or_username_token_with_message_protection_service_policy

注意:

SAML送信者保証トークンは、この使用例ではサポートされません。

この項で説明する手順は、Windows Server 2008またはWindows Server 2008 R2へのADFS 2.0のインストールに基づいています。

次のトピックでは、ADFS 2.0をインストールおよび構成する方法を説明します。

6.10.1 Active Directory Federation Services (ADFS) 2.0のインストールおよび構成

ADFS 2.0をWindows Server 2008またはWindows Server 2008 R2システムにインストールして構成できます。

Active Directory Federation Services (ADFS) 2.0をインストールおよび構成するには、次のようにします。

  1. STSロールでシステムを設定します。
  2. インターネット インフォメーション サービス (IIS) マネージャ・コンソールを使用して、IISで自己署名入りサーバー認証証明書を作成して構成し、デフォルトのWebサイトにバインドします。完了したら、SSLサーバー認証を有効にします。

    注意:

    ADFS 2.0設定ウィザードによって、Webサーバー(IIS)サーバー・ロールが自動的にシステムにインストールされます。

  3. スタンドアロン・フェデレーション・サーバーとしてADFS 2.0を構成します。
  4. ADFS 2.0トークン署名証明書をエクスポートします。

    自己署名入り証明書の場合は、「DER encoded binary X.509 (.cer)」を選択します。

    署名証明書が自己署名入りでない場合は、「Cryptographic Message Syntax Standard - PKCS #7 証明書 (.P7B)」を選択し、証明のパスにある証明書をすべて含めることを指定します。

  5. ユーザーを作成し、電子メール・アドレスを含めます。後でSTSを有効にして、サービス用の送信SAMLアサーションのサブジェクト名IDとして電子メール・アドレスを送信します。

詳細については、次の情報を参照してください。

6.10.2 ADFS 2.0 STSによって発行されたSAMLアサーションを信頼するためのOWSMの構成

信頼できるSTSサーバーにSTS署名証明書を追加して、信頼できるSAMLトークン発行者としてADFS 2.0 STSを保護できます。

ADFS 2.0 STSによって発行されたSAMLアサーションを信頼するようにOWSMを構成するには、次のようにします。

  1. Active Directory Federation Services (ADFS) 2.0のインストールおよび構成でエクスポートしたSTS署名証明書を取得します。

    証明書チェーンの.p7bファイルの場合、IEでファイルを開き、各証明書を.cerファイルのチェーンにコピーします。

  2. keytoolを使用して証明書をデフォルトのキーストアの場所にインポートします。

    keytool –importcert –file <sts-signing-certs-file> –trustcacerts –alias <alias> –keystore default-keystore.jks

    詳細は、「keytool - 鍵および証明書管理ツール」(http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html)を参照してください。

  3. http://domain-name/adfs/services/trustをSAMLの信頼できる発行者として追加します。
  4. 信頼できるSTSサーバー・セクションにSTS証明書のサブジェクトDN (RFC 2253で定義)を追加します。CN=abcなど、RFC 2253に準拠する文字列を使用してください。keytoolなどの任意のメカニズムを使用して、証明書を表示し、サブジェクトDNを決定できます。

    詳細は、次のトピックを参照してください。

6.10.3 Oracle Internet Directoryのユーザーの構成

各ユーザーに、ADFSに設定されるユーザー電子メール・アドレスと一致するメール属性を構成します。

Oracle Internet Directoryでのユーザーの構成の詳細は、『Oracle Internet Directory管理者ガイド』のユーザー作成のためのディレクトリ・エントリの管理を参照してください。

6.10.4 ポリシーのWebサービスへのアタッチ

OWSMでは、Webサービスに直接アタッチできる多数のセキュリティ・ポリシーをサポートしています。

次のOWSMポリシーのいずれかをWebサービスにアタッチします。

  • oracle/wss_sts_issued_saml_bearer_token_over_ssl_service_policy

  • oracle/wss_saml_token_bearer_over_ssl_service_policy

  • oracle/wss11_saml_or_username_token_with_message_protection_service_policy

詳細は、次を参照してください。

  • 『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する説明

  • Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理の事前定義済のポリシー

6.10.5 ADFS 2.0のリライイング・パーティとしてのWebサービスの登録

電子メール・アドレスまたは名前ID (SAM-Account-Name)をサブジェクト名IDとして使用してWebサービスにSAMLアサーションを発行するようにADFS 2.0を構成できます。

ADFS 2.0をリライイング・パーティとして構成するには、次のようにします。

  1. Webサービスをリライイング・パーティとして追加します。

    詳細は、http://technet.microsoft.com/en-us/library/dd807108.aspxの「Create a Relying Party Trust Manually」を参照してください。

  2. サービスの要求規則を構成します。

    STSを有効にして、サービス用の送信SAMLアサーションのsubject name idとして電子メール・アドレスまたは名前IDを送信し、テンプレートの異なる2つの要求規則のチェーンを作成します。

    STSを有効にして、サービス用の送信SAMLアサーションのsubject name idとして電子メール・アドレスまたは名前IDを送信するには、この項の手順を使用して、テンプレートの異なる2つの要求規則のチェーンを作成します。

    詳細は、以下のトピックを参照してください。

6.10.6 ADFS 2.0を使用するWCF/.NET 4.5クライアントの保護

WCF/.NET 4.5クライアントを保護するため、複数のセキュリティおよび認証メカニズムを実装できます。

ADFS 2.0を使用してWCF/.NET 4.5クライアントを保護するには、次のようにします。

  1. STSおよびサービス用のSSLサーバー証明書をWindowsにインポートします。

    STSまたはサービス用のSSLサーバー証明書が、信頼できるCAから発行されていない、または自己署名入りである場合は、Microsoft WCF/.NET 4.5クライアントの構成(メッセージ保護付きユーザー名トークン)のステップ1の説明に従って、MMCツールを使用してインポートする必要があります。

    詳細は、http://msdn.microsoft.com/en-us/library/ms788967.aspxの『How to: View Certificates with the MMC Snap-in』を参照してください。

  2. 後述のステップ3および4の説明に従って、WCF/.NETクライアントを作成および構成します。

    ADFS 2.0 STSにより、トークンに対する保険としての複数のセキュリティおよび認証メカニズムがサポートされます。これらはそれぞれ個別のエンドポイントとして公開されます。ユーザー名/パスワード認証では、2つのエンドポイントが提供されます。

    • http://<adfs.domain>/adfs/services/trust/13/username - このエンドポイントはメッセージ保護付きユーザー名トークン用です。

    • https://<adfs.domain>/adfs/services/trust/13/usernamemixed - このエンドポイントはトランスポート保護(SSL)付きユーザー名トークン用です。

    WCFクライアントは、SSLのユーザー名トークン用のhttps://<adfs.domain>/adfs/services/trust/13/usernamemixedエンドポイントを使用して、サービスのSAMLベアラー・トークンを取得します。

  3. サービスWSDLを使用して、WCFクライアントを生成します。

    詳細は、http://msdn.microsoft.com/en-us/library/ms733133(v=vs.110).aspxの『How to: Create a Windows Communication Foundation Client』を参照してください。

  4. 次のようにして、ws2007FederationHttpBindingを使用するクライアントを構成し、app.configファイルを編集します。

    例6-16に、次のポリシーを使用したWebサービスで使用するapp.configのサンプルを示します。

    • oracle/wss_sts_issued_saml_bearer_token_over_ssl_service_policy

    • oracle/wss_saml_token_bearer_over_ssl_service_policy

    • oracle/wss11_saml_or_username_token_with_message_protection_service_policy

    詳細は、http://msdn.microsoft.com/en-us/library/bb472490.aspxの「WS 2007 Federation HTTP Binding」を参照してください

  5. program.csファイルを編集し、サービスの呼出しを行います。

    まだ存在していない場合は、プロジェクトに.csファイルを作成し、program.csという名前(または任意の名前)を付けます。例6-17のコードと一致するように編集します。

    この例では、次のとおりです。

    joeはユーザー名、eojはパスワードであり、STSに対して認証するためにクライアントによって使用されます。

    System.Net.ServicePointManager.ServerCertificateValidationCallback = ((sender, certificate, chain, sslPolicyErrors) => true);は、サーバー側の自己署名入り証明書を検証するために追加されています。サーバー証明書が信頼できるCAから発行されている場合、これは不要です。テスト用に自己署名入り証明書を使用している場合、この方法を追加してクライアント側の証明書を検証します。

    次の様々なSAMLベースの認証を実装するためのapp.configファイルのサンプルを参照してくささい。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.serviceModel>
        <behaviors>
          <endpointBehaviors>
            <behavior name="secureBehaviour">
              <clientCredentials>
                <serviceCertificate>
                  <defaultCertificate findValue="weblogic"  
                      storeLocation="LocalMachine" 
                      storeName="My" 
                      x509FindType="FindBySubjectName"/>
                </serviceCertificate>
              </clientCredentials>
            </behavior>
          </endpointBehaviors>
        </behaviors>
        <bindings>
          <ws2007FederationHttpBinding>
            <binding name="JaxWsWss11SamlOrUsernameOrSamlBearerOverSSLSoapHttp">
              <security mode="TransportWithMessageCredential">
                <message negotiateServiceCredential="false"
                     algorithmSuite="Basic128"
                     issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1"
                     issuedKeyType="BearerKey">
                  <issuer address ="https://domain-name/adfs/services/trust/13/usernamemixed"
                          binding ="ws2007HttpBinding"
    					                      bindingConfiguration="ADFSUsernameMixed"/>
                 </message>
              </security>
            </binding>
          </ws2007FederationHttpBinding>
          <ws2007HttpBinding>
            <binding name="ADFSUsernameMixed">
              <security mode="TransportWithMessageCredential">
                <message clientCredentialType="UserName" 
                         establishSecurityContext="false" />
              </security>
            </binding>
          </ws2007HttpBinding>
        </bindings>
        <client>
          <endpoint address="https://host:8002/JaxWsWss11SamlOrUsernameOrSamlBearerOverSSL/JaxWsWss11SamlOrUsernameOrSamlBearerOverSSLService"
              binding="ws2007FederationHttpBinding" 
              bindingConfiguration="JaxWsWss11SamlOrUsernameOrSamlBearerOverSSLSoapHttp"
              contract="JaxWsWss11SamlOrUsernameOrSamlBearerOverSSL" 
              name="JaxWsWss11SamlOrUsernameOrSamlBearerOverSSLPort">
                <identity>
                  <dns value="weblogic" />
                </identity>
              </endpoint>
        </client>
      </system.serviceModel>
    </configuration>

    次のprogram.csファイルのサンプルを参照してください。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ServiceModel;
     
    namespace Client
    {
        class Program
        {
            static void Main(string[] args)
            {
                JaxWsWss11SamlOrUsernameOrSamlBearerOverSSLClient client = 
                   New JaxWsWss11SamlOrUsernameOrSamlBearerOverSSLClient();
     
                client.ClientCredentials.UserName.UserName = "joe";
                client.ClientCredentials.UserName.Password = "eoj";
     
                      
     
     
    System.Net.ServicePointManager.ServerCertificateValidationCallback =
                   ((sender, certificate, chain, sslPolicyErrors) => true);
                
     
                Console.WriteLine(client.echo("Hello"));
                Console.Read();
            }
     
        }
    }