この章では、.NET 2.0とOracle Service Bus間でメッセージ・レベルのセキュリティを構成する方法について説明します。
この章の内容は次のとおりです。
Microsoft .NET 2.0フレームワークとOracle Service Busとの間でメッセージ・レベルのセキュリティを設定できます。メッセージ・レベルのセキュリティでは、Webサービス・クライアントがOracle Service Busプロキシ・サービスまたはビジネス・サービスとの接続を確立した後、プロキシ・サービスまたはビジネス・サービスがこのメッセージを処理する前にSOAPメッセージに対してセキュリティ・チェックが適用されます。
.NETフレームワークは、Microsoft Windowsオペレーティング・システムに追加することができるソフトウェア・コンポーネントです。一般的なプログラム要件に対してあらかじめコード化されたソリューションを提供し、このフレームワーク専用に記述されたプログラムの実行を管理します。
この項では、.NET 2.0およびOracle Service Busでメッセージ・レベルのセキュリティを構成するために必要な手順を説明します。
注意: これらの手順を実行する前に、第52章「Webサービスのメッセージ・レベルでのセキュリティの構成」の手順に従って、Oracle Service Busに対してインバウンドとアウトバウンドのメッセージングを構成する必要があります。 |
.NETとOracle Service Bus間でメッセージ・レベルのセキュリティを構成するには:
Oracle Service Busのアウトバウンドおよびインバウンド・メッセージングを構成する手順が完了していることを確認します。手順については、上記の警告を参照してください。
http://msdn2.microsoft.com/en-us/webservices
からWeb Service Enhancements (WSE) 3.0をダウンロードしてインストールします。WSE 3.0はSOAPの拡張が管理する.NET 2.0フレームワークと互換性があるAPI (Microsoft.Web.Services3.dll
)です。
WSE 3.0のインストール後に、使用するWebアプリケーションでWSEを有効にし、またWSE Soap Protocol Factoryのサポートを有効にする必要があります。この2つの機能はVisual Studioのウィザードを使用して有効にできます。詳細は、http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wse3.0/html/5a8f03b1-16ac-4c5c-9d9e-132a9c0b628a.asp
を参照してください。
WSE 3.0を有効にすると、次の制限が生じます。
WSE 3.0ではWS-Policyがサポートされていません。そのため、.NET 1.1とWSE 2.0のときのような構成を目的とするWS-SecurityPolicyもサポートされません。WSE 3.0でサポートされるのは、WSE 2.0と同様の機能を提供するwse3policyCache.config
ファイル(または同等の.NETコード)を使用して構成された独自のポリシーに限られます。この変更の結果、.NET WebサービスのWSDLにWS-Policy文は含まれなくなりました。一方、Oracle Service Busでは、2002年12月18日バージョンのWebサービス・セキュリティ・ポリシー言語(WS-SecurityPolicy)仕様に記述されたアサーションに基づく、Oracle WebLogic Server独自の形式をサポートしています。Oracle Service Busで.NET WSDLを利用するには、WSDLに同等のOracle Service Bus独自バージョンのWS-Policyを組み込む必要があります。
例55-1のWSDLコード・サンプルは、Oracle Service Busにおけるメッセージ・レベルのID伝播、機密性、および整合性をWS-Policyに構成する方法を示します。
WSE 3.0ではwse3policyCache.config
ファイルに複数の設定不要のセキュリティ・アサーション用のポリシー構成が用意されており、Visual Studioのウィザードを使用して選択できます。提供されているメッセージ・レベル・セキュリティ(暗号化や署名など)にマップする証明書は、MutualCertificate10です。MutualCertificate10セキュリティ・アサーションの構成については、http://msdn2.microsoft.com/en-us/library/aa480581.aspx
を参照してください。
WSE Soap Protocol FactoryはSOAP 1.2にあるセキュリティをサポートしません。Visual Studioの「Web Reference」オプションを使用して生成されたクライアント・スタブには、SOAP 1.1を選択した場合にのみセキュリティに対応した操作が含まれます。メッセージ・レベルのセキュリティの相互運用性は、SOAP 1.1でのみ機能します。
.NET 1.1とWSE 2.0の場合と同じように、デフォルトで構成されているWS-Addressingヘッダーとタイムスタンプの自動署名機能を無効にする必要があります。次の例に示すように、wse3policyCache.config
ファイルにあるプロパティの一部を変更してください。
デフォルトのConfig
<protection> <request signatureOptions="IncludeAddressing, IncludeTimestamp, IncludeSoapBody" encryptBody="true" /> <response signatureOptions="IncludeAddressing, IncludeTimestamp, IncludeSoapBody" encryptBody="true" /> <fault signatureOptions="IncludeAddressing, IncludeTimestamp, IncludeSoapBody" encryptBody="false" /> </protection>
必要とされるConfig
<protection> <request signatureOptions="IncludeSoapBody" encryptBody="true" /> <response signatureOptions="IncludeAddressing, IncludeTimestamp, IncludeSoapBody" encryptBody="true" /> <fault signatureOptions="IncludeSoapBody" encryptBody="false" /> </protection>
デフォルトでは、WSE 3.0は鍵のラッピング・アルゴリズムとしてOAEPを想定しています。ただし、Oracle Service BusではRSA15アルゴリズムを使用します。構成がOAEPのままの場合、「Microsoft.Web.Services3.Security.SecurityFault: An unsupported signature or encryption algorithm was used System.Exception: WSE3002: The receiver is expecting the key wrapping algorithm to be http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p, but the incoming message usedhttp://www.w3.org/2001/04/xmlenc#rsa-1_5.
」という例外が表示されます。セキュリティ・トークン・マネージャを構成することで、鍵のラッピング・アルゴリズムを変更できます。
このエラーを回避するには、次の構成を<microsoft.web.services3> <security>
要素の下にあるweb.config
ファイル(.NET Webサービス上)、およびapp.config
ファイル(.NETのクライアント側)に追加します。
<binarySecurityTokenManager> <add valueType="http://docs.oasis-open.org/wss/2004/01/ oasis-200401-wss-x509-token-profile-1.0#X509v3";> <keyAlgorithm name="RSA15" /> </add> </binarySecurityTokenManager>
この構成により、WSEではOAEPではなくRSA15が強制的に使用されるようになります。
ユーザー名のトークン認証の場合、.NETによって設定不要のアサーションusernameForCertificateSecurity
が提供されます。このアサーションは、サービスのX.509証明書を使用して、クライアントとサービス間の通信チャネルをメッセージ・レイヤーで保護します。ただし、この証明書は<EncryptedKey>
要素をセキュリティ・トークンとして参照する機能に依存し、署名確認のオプションが、レスポンス・メッセージとそれを引き起こしたリクエストを関連付けられるようにします。
ユーザー名トークン認証のかわりとして、.NETには設定不要のアサーションusernameOverTransportSecurity
があります。このアサーションではクライアントとサービスとの間の通信がトランスポート・レイヤーでセキュリティで保護されていることが前提となっています。このアプローチは、WS-Security互換であり、SSLを介したメッセージ・レベルの認証をサポートします。設定不要のアサーションusernameOverTransportSecurity
を暗号化や署名といった他のメッセージ・レベルのセキュリティ・メカニズムと組み合せる場合は、.NETでカスタム・コードを作成する必要があります。
Oracle Service Busの構成を行う前に、次の条件を満たしている必要があります。
.NETクライアントは、プレーン・テキストのメッセージでOracle Service Busプロキシを呼び出します(たとえば、メッセージ・レベルのセキュリティは.NETクライアントとOracle Service Busプロキシ間には存在しません)。
Oracle Service Busはアウトバウンド・メッセージ・レベルのセキュリティをSOAPリクエストに適用します。
注意: .NETクライアントでメッセージ・レベルのセキュリティが有効になっている場合は、Oracle Service Busをパススルー・プロキシとして使用できます。 |
Oracle Service Busに.NETとのメッセージ・レベルのセキュリティを構成するには:
次のように、暗号化アルゴリズムをtripledes-cbc
からaes256-cbc
に変更します。
<wssp:EncryptionAlgorithm URI="http://www.w3.org/2001/ 04/xmlenc#aes256-cbc"/>
WSDLのsign.xmlポリシーを変更します。この属性は、整合性アサーション要素にあります。
<wssp:Integrity SignToken='false' .... > ... </wssp:Integrity>
この値はデフォルトではtrueになっています。
.NET Webサービスでは、WS-Addressingの<wsa:To>
要素に自身のURLが含まれていることが想定されています。.NETクライアントが初めてOracle Service Busプロキシを呼び出すときに、<wsa:To>
要素は最初はOracle Service BusプロキシのURLに設定されます。このURLをOracle Service Busのプロキシ・メッセージ・フローにある.NET WebサービスのURLに変更します。それには、次の例に示すようにReplace
アクションを使用します。
元のURL
<wsa:To wsu:Id="To_1mbmRK4w0bo2Dz1z" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- wssecurity-utility-1.0.xsd";>http://localhost:7001/SecurityALSBProxy<;/ wsa:To>
置換アクション後のURL
<wsa:To wsu:Id="To_1mbmRK4w0bo2Dz1z" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- wssecurity-utility-1.0.xsd";>http://localhost/SimpleSecurity/ SecurityService.asmx<;/wsa:To>
このURLを変更しないと、次のエラーが表示されます。
Microsoft.Web.Services3.Addressing.AddressingFault: Destination Unreachable System.Exception: WSE846: The header must match the actor URI value of the web service. The actor URI value can be explicitly specified using SoapActorAttribute on the ASMX class. In the absence of the attribute, the actor URI is assumed to be equal to the HTTP Request Url of the incoming message. The header received contained "http://localhost:7001/SecurityALSBProxy"; while the receiver is expecting "http://localhost/SimpleSecurity/SecurityService.asmx";
.NETクライアントには、SOAPヘッダーに対する自身のTimestamp要素が含まれています。Oracle Service Busは余分なTimestampヘッダーを追加するため、次のエラーが発生します。
Microsoft.Web.Services3.Security.SecurityFault: An error was discovered processing the header Microsoft.Web.Services3.Security.Security FormatException: WSE001: The input was not a valid Security element because it contains more than one Timestamp child element.
この問題を解決するには、削除アクションを使用して.NETクライアントがメッセージ・フローに追加した元のTimestamp要素を削除します。
CertificateRegistry証明書パス・プロバイダを追加します。これを追加するには、WLS管理コンソールからレルム→「プロバイダ」→「証明書のパス」→「新規」の順に選択し、使用可能なオプションからCertificateRegistryを選択します。
変更をアクティブ化し、サーバーを再起動します。
サーバーの再起動後、新規に作成したCertificateRegistryを編集します。「管理」タブで、次の3つの証明書を追加します。
Oracle Service Busのパブリック証明書
.NETのパブリック証明書
ルート・エージェント(これらの証明書の発行者)
注意: 証明書を追加する方法の1つは、「移行」タブからJKSストアをインポートすることです。IDストアの実際のパスを指定します。 |
CertificateRegistryプロバイダの「構成(一般)」タブで、「現在のビルダー」を選択して、これを現在のビルダーに設定します。
変更を保存します。次にサーバーをアクティブ化し、再起動します。
WLSキーストアでは次の同じ証明書が必要です。
Oracle Service Busのパブリック証明書
.NETのパブリック証明書
ルート・エージェント(これらの証明書の発行者)
Oracle WebLogic ServerインスタンスのIDおよびトラスト・キーストアは、サーバー構成のキーストアのページで構成します。これを行うには、Oracle WebLogic Serverオンライン・ヘルプの「IDとトラストの構成」を参照してください。
例55-1のWSDLサンプルは、Oracle Service Busにおけるメッセージ・レベルのID伝播、機密性、および整合性をWS-Policy
に構成する方法を示します。
例55-1 メッセージ・レベルのセキュリティのWS-Policyへの構成
<?xml version='1.0' encoding='UTF-8'?> <definitions name="SecureHello WorldServiceDefinitions"targetNamespace= "http://www.bea.com" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:s0="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- wssecurity-utility-1.0.xsd" xmlns:s1="http://www.bea.com" xmlns:s2="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> <wsp:UsingPolicy xmlns:n1="http://schemas.xmlsoap.org/wsdl/" n1:Required="true"/> <wsp:Policy s0:Id="Encrypt.xml"> <wssp:Confidentialityxmlns:wssp="http://www.bea.com/wls90/ security/policy"> <wssp:KeyWrappingAlgorithm URI="http://www.w3.org/2001/04/ xmlenc#rsa-1_5"/> <wssp:Target> <wssp:EncryptionAlgorithm URI="http://www.w3.org/2001/ 04/xmlenc#aes256-cbc"/> <wssp:MessageParts Dialect="http://schemas.xmlsoap.org /2002/12/wsse#part">wsp:Body() </wssp:MessageParts> </wssp:Target> <wssp:KeyInfo> <wssp:SecurityToken TokenType="http://docs.oasis-open. org/wss/2004/01/oasis-200401-wss-x509-token- profile-1.0#X509v3"/> <wssp:SecurityTokenReference> <wssp:Embedded> <wsse:BinarySecurityToken EncodingType="http: //docs.oasis-open.org/wss/2004/ 01/oasis-200401-wss-soap-message -security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/ wss/2004/01/oasis-200401-wss-x509 -token-profile-1.0#X509v3" xmlns:wsse="http://docs.oasis-open.org/ wss/2004/01/oasis-200401-wss-wssecurity- secext-1.0.xsd">MIIB7DCCAZYCEN+FHomYRZU YPLiIutc0lIIwDQYJKoZIhvcNAQEEBQAweTELMAk GA1UEBhMCVVMxEDAOBgNVBAgTB015U3RhdGUxDzA NBgNVBAcTBk15VG93bjEXMBUGA1UEChMOTXlPcmd hbml6YXRpb24xGTAXBgNVBAsTEEZPUiBURVNUSU5 HIE9OTFkxEzARBgNVBAMTCkNlcnRHZW5DQUIwHhc NMDYwNjA3MDQ0MDM2WhcNMjEwNjA4MDQ0MDM2WjB 6MQswCQYDVQQGEwJVUzEQMA4GA1UECBYHTXlTdGF 0ZTEPMA0GA1UEBxYGTXlUb3duMRcwFQYDVQQKFg5 NeU9yZ2FuaXphdGlvbjEZMBcGA1UECxYQRk9SIFR FU1RJTkcgT05MWTEUMBIGA1UEAxYLYmFuZ3BsdHc zazIwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAxv2 nWByAF2Xr9wrb06ydrrcqPt2VQa0xcwfdZZ6oGlj 1TXq+G5/Q82v7CdxjyWUQBuAzduQx9wFCrAe/aWV pgQIDAQABMA0GCSqGSIb3DQEBBAUAA0EARbwfl8w X915jL5reY+isriNF0EfUs5ck53WRNowiapJx2ea ZE03quksJgeJ0z0HekkR/aTQnkMV1xIt1HxMKRw= =</wsse:BinarySecurityToken> </wssp:Embedded> </wssp:SecurityTokenReference> </wssp:KeyInfo> </wssp:Confidentiality> </wsp:Policy> <wsp:Policy s0:Id="Auth.xml"> <wssp:Identity xmlns:wssp="http://www.bea.com/wls90/security/ policy"> <wssp:SupportedTokens> <wssp:SecurityToken TokenType="http://docs.oasis-open. org/wss/2004/01/oasis-200401-wss-username-token -profile-1.0#UsernameToken"> <wssp:UsePassword Type="http://docs.oasis-open. org/wss/2004/01/oasis-200401-wss-username -token-profile-1.0#PasswordText"/> </wssp:SecurityToken> </wssp:SupportedTokens> </wssp:Identity> </wsp:Policy> <wsp:Policy s0:Id="Sign.xml"> <wssp:Integrity SignToken='false' xmlns:wls="http://www.bea.com/wls90/security/ policy/wsee#part"xmlns:wssp="http://www.bea.com/wls90/ security/policy" xmlns:wsu="http://docs.oasis-open.org/wss /2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <wssp:SignatureAlgorithm URI="http://www.w3.org/2000/09/ xmldsig#rsa-sha1"/> <wssp:CanonicalizationAlgorithm URI="http://www.w3.org/ 2001/10/ xml-exc-c14n#"/> <wssp:Target> <wssp:DigestAlgorithm URI="http://www.w3.org/2000/09 /xmldsig#sha1"/> <wssp:MessageParts Dialect="http://www.bea.com/wls90/ security/policy/wsee#part"> wls:SystemHeaders() </wssp:MessageParts> </wssp:Target> <wssp:Target> <wssp:DigestAlgorithm URI="http://www.w3.org/2000/09 /xmldsig#sha1"/> <wssp:MessageParts Dialect="http://www.bea.com/wls90/ security/policy/wsee#part"> wls:SecurityHeader(wsu:Timestamp) </wssp:MessageParts> </wssp:Target> <wssp:Target> <wssp:DigestAlgorithm URI="http://www.w3.org/2000/09/ xmldsig#sha1"/> <wssp:MessageParts Dialect="http://schemas.xmlsoap. org/2002/12/wsse#part"> wsp:Body() </wssp:MessageParts> </wssp:Target> <wssp:SupportedTokens> <wssp:SecurityToken IncludeInMessage="true" TokenType= "http://docs.oasis-open.org/wss/2004/01/oasis- 200401-wss-x509-token-profile-1.0#X509v3"> <wssp:TokenIssuer>CN=CACERT,OU=FOR TESTING ONLY, O=MyOrganization,L=MyTown,ST=MyState,C=US,1.2. 840.113549.1.9.1=#160f737570706f7274406265612e636 f6d,CN=Demo Certificate Authority Constraints,OU= Security,O=BEA WebLogic,L=San Francisco,ST= California,C=US,1.2.840.113549.1.9.1=#16107365637 572697479406265612e636f6d,CN=Demo Certificate Authority Constraints,OU=Security,O=BEA WebLogic, L=San Francisco,ST=California,C=US,CN=CertGenCAB, OU=FOR TESTING ONLY,O=MyOrganization,L=MyTown,ST= MyState,C=US,CN=Equifax Secure eBusiness CA-1,O= Equifax Secure Inc.,C=US,CN=VeriSign Class 1 Public Primary Certification Authority - G3,OU= (c)1999 VeriSign\, Inc. - For authorized use only, OU=VeriSign Trust Network,O=VeriSign\, Inc.,C=US, OU=VeriSign Trust Network,OU=(c) 1998 VeriSign\, Inc. - For authorized use only,OU=Class 2 Public Primary Certification Authority - G2,O=VeriSign\, Inc.,C=US,CN=VeriSign Class 3 Public Primary Certification Authority - G3,OU=(c) 1999 VeriSign\,Inc. - For authorized use only,OU= VeriSign Trust Network,O=VeriSign\,Inc.,C=US,CN= Entrust.net Client Certification Authority,OU=(c) 2000 Entrust.net Limited,OU=www.entrust.net/ GCCA_CPS incorp. by ref. (limits liab.),O=Entrust .net,OU=Go Daddy Class 2 Certification Authority, O=The Go Daddy Group\, Inc.,C=US,CN=GTE Cyber Trust Global Root,OU=GTE CyberTrust Solutions\, Inc., O=GTE Corporation,C=US,CN=Entrust.net Secure Server Certification Authority,OU=(c) 2000 Entrust.net Limited,OU=www.entrust.net/SSL_CPS incorp. by ref. (limits liab.),O=Entrust.net,OU= Class 1 Public Primary Certification Authority, O=VeriSign\, Inc.,C=US,1.2.840.113549.1.9.1=#161 9706572736f6e616c2d6261736963407468617774652e636 f6d,CN=Thawte Personal Basic CA,OU=Certification Services Division,O=Thawte Consulting,L=Cape Town, ST=Western Cape,C=ZA,OU=VeriSign Trust Network, OU=(c) 1998 VeriSign\, Inc. - For authorized use only,OU=Class 1 Public Primary Certification Authority - G2,O=VeriSign\, Inc., C=US,CN=Entrust.net Secure Server Certification Authority,OU=(c) 1999 Entrust.net Limited,OU= www.entrust.net/CPS incorp. by ref.(limits iab.), O=Entrust.net,C=US, 1.2.840.113549.1.9.1=#161c706 572736f6e616c2d667265656d61696c407468617774652e63 6f6d,CN=Thawte Personal Freemail CA,OU= Certification Services Div,O=Thawte Consulting, L =Cape Town,ST=Western Cape,C=ZA,OU=Class 3 Public Primary Certification Authority,O=VeriSign\, Inc. C=US,CN=GTE CyberTrust Root,O=GTE Corporation,C= US,CN=VeriSign Class 2 Public Primary Certificate Authority - G3,OU=(c) 1999 VeriSign\, Inc. - For authorized use only,OU=VeriSign Trust Network,O= VeriSign\,Inc.,C=US,1.2.840.113549.1.9.1=#1617736 5727665722d6365727473407468617774652e636f6d,CN= Thawte Server CA,OU=Certification Services Division,O=Thawte Consulting cc,L=Cape Town,ST= Western Cape,C=ZA,OU=Equifax Secure Certificate Authority,O=Equifax,C=US,1.2.840.113549.1.9.1=#16 1b706572736f6e616c2d7072656d69756d407468617774652 e636f6d,CN=Thawte Personal Premium CA,OU= Certification Services Division,O=Thawte Consulting,L=Cape Town,ST=Western Cape,C=ZA,1.2. 840.113549.1.9.1=#16197072656d69756d2d73657276657 2407468617774652e636f6d,CN=Thawte Premium Server CA,OU=Certification Services Division,O=Thawte Consulting cc,L=Cape Town,ST=Western Cape,C=ZA, OU=VeriSign Trust Network,OU=(c) 1998 VeriSign\, Inc. - For authorized use only,OU=Class 3 Public Primary Certification Authority - G2,O=VeriSign\, Inc.,C=US,CN=Entrust.net Certification Authority (2048),OU=(c) 1999 Entrust.net Limited,OU=www .entrust.net/CPS_2048 incorp. by ref. (limits liab.),O=Entrust.net,1.2.840.113549.1.9.1=#1611 696e666f4076616c69636572742e636f6d,CN=http://www. valicert.com/,OU=ValiCert Class 2 Policy Validation Authority,O=ValiCert\, Inc.,L=Vali cert Validation Network,CN=Baltimore CyberTrust Root, OU=CyberTrust,O=Baltimore,C=IE,OU=Secure Server Certification Authority,O=RSA Data Security\, Inc.,C=US,CN=Entrust.net Client Cert Authority,OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/Client_CA_Info/CPS incorp. by ref. limits liab.,O=Entrust.net,C=US,CN=GeoTrust Global CA,O=GeoTrust Inc.,C=US,CN=GTE CyberTrust Root 5,OU=GTE CyberTrust Solutions\, Inc.,O=GTE Corporation,C=US,OU=Starfield Class 2 Certification Authority,O=Starfield Technologies\, Inc.,C=US,CN=Equifax Secure Global eBusiness CA-1,O=Equifax Secure Inc.,C=US, CN=Baltimore CyberTrust Code Signing Root,OU= CyberTrust,O=Baltimore,C=IE,OU=Class 2 Public Primary Certification Authority,O=VeriSign\, Inc.,C=US,OU=Equifax Secure eBusiness CA-2,O= Equifax Secure,C=US,</wssp:TokenIssuer> </wssp:SecurityToken> </wssp:SupportedTokens> </wssp:Integrity> <wssp:MessageAge Age="60" xmlns:wssp="http://www.bea.com/wls90/ security/policy"/> </wsp:Policy> <types> <xs:schema attributeFormDefault="unqualified" elementFormDefault= "qualified" targetNamespace="http://www.bea.com" xmlns:s0=" http://www.bea.com" xmlns:s1="http://schemas.xmlsoap.org /wsdl/soap/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/ 09/policy" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="sayHello"> <xs:complexType> <xs:sequence> <xs:element name="s" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="sayHelloResponse"> <xs:complexType> <xs:sequence> <xs:element name="return" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </types> <message name="sayHello"> <part element="s1:sayHello" name="parameters"/> </message> <message name="sayHelloResponse"> <part element="s1:sayHelloResponse" name="parameters"/> </message> <portType name="SecureHelloWorldPortType" wsp:PolicyURIs="#Sign.xml #Auth.xml #Encrypt.xml"> <operation name="sayHello" parameterOrder="parameters"> <input message="s1:sayHello"/> <output message="s1:sayHelloResponse"/> </operation> </portType> <binding name="SecureHelloWorldServiceSoapBinding" type="s1: SecureHelloWorldPortType"> <s2:binding style="document" transport="http://schemas. xmlsoap.org/ soap/http"/> <operation name="sayHello"> <s2:operation soapAction="" style="document"/> <input> <s2:body parts="parameters" use="literal"/> </input> <output> <s2:body parts="parameters" use="literal"/> </output> </operation> </binding> <service name="SecureHelloWorldService"> <port binding="s1:SecureHelloWorldServiceSoapBinding" name="SecureHelloWorldServicePort"> <s2:address location="http://localhost:9111/ SecureHelloWorldService/SecureHelloWorld Service"/> </port> </service> </definitions>