首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将WS-Policy放入WSDL文档

如何将WS-Policy放入WSDL文档
EN

Stack Overflow用户
提问于 2010-09-10 01:38:58
回答 3查看 3.8K关注 0票数 1

我有一个声明WS-policy的外部xml文件,如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<wsp:Policy xmlns:wsp="http://www.w3.org/2006/07/ws-policy" 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
xmlns:wsrr="http://www.ibm.com/xmlns/prod/serviceregistry/6/2/wspolicy" 
xmlns:wsoma="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" 
wsrr:policyClassDomain="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" targetNamespace="http://mycommon/Policy">
 <wsp:Policy wsu:Id="WSHttpsBinding_policy">
 <wsp:ExactlyOne>
  <wsp:All>
  <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
   <wsp:Policy>
   <sp:TransportToken>
    <wsp:Policy>
    <sp:HttpsToken RequireClientCertificate="false" />
    </wsp:Policy>
   </sp:TransportToken>
   <sp:AlgorithmSuite>
    <wsp:Policy>
    <sp:Basic256 />
    </wsp:Policy>
   </sp:AlgorithmSuite>
   <sp:Layout>
    <wsp:Policy>
    <sp:Strict />
    </wsp:Policy>
   </sp:Layout>
   </wsp:Policy>
  </sp:TransportBinding>
  <wsaw:UsingAddressing />
  </wsp:All>
 </wsp:ExactlyOne>
 </wsp:Policy>
 <wsp:Policy wsu:Id="WSHttpBinding_policy">
 <wsp:ExactlyOne>
  <wsp:All>
  <wsaw:UsingAddressing />
  </wsp:All>
 </wsp:ExactlyOne>
 </wsp:Policy>
 <wsp:Policy wsu:Id="basicHttpsBinding_policy">
 <wsp:ExactlyOne>
  <wsp:All>
  <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
   <wsp:Policy>
   <sp:TransportToken>
    <wsp:Policy>
    <sp:HttpsToken RequireClientCertificate="false" />
    </wsp:Policy>
   </sp:TransportToken>
   <sp:AlgorithmSuite>
    <wsp:Policy>
    <sp:Basic256 />
    </wsp:Policy>
   </sp:AlgorithmSuite>
   <sp:Layout>
    <wsp:Policy>
    <sp:Strict />
    </wsp:Policy>
   </sp:Layout>
   </wsp:Policy>
  </sp:TransportBinding>
  </wsp:All>
 </wsp:ExactlyOne>
 </wsp:Policy>
 <wsp:Policy wsu:Id="TcpBinding_policy">
 <wsp:ExactlyOne>
  <wsp:All>
  <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1" />
  <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
   <wsp:Policy>
   <sp:TransportToken>
    <wsp:Policy>
    <msf:WindowsTransportSecurity xmlns:msf="http://schemas.microsoft.com/ws/2006/05/framing/policy">
     <msf:ProtectionLevel>EncryptAndSign</msf:ProtectionLevel>
    </msf:WindowsTransportSecurity>
    </wsp:Policy>
   </sp:TransportToken>
   <sp:AlgorithmSuite>
    <wsp:Policy>
    <sp:Basic256 />
    </wsp:Policy>
   </sp:AlgorithmSuite>
   <sp:Layout>
    <wsp:Policy>
    <sp:Strict />
    </wsp:Policy>
   </sp:Layout>
   </wsp:Policy>
  </sp:TransportBinding>
  <wsaw:UsingAddressing />
  </wsp:All>
 </wsp:ExactlyOne>
 </wsp:Policy> 
</wsp:Policy> 

如何将其链接到为我的服务生成的WSDL文档?

EN

回答 3

Stack Overflow用户

发布于 2011-10-06 23:27:39

我想你应该搜索这里描述的“外部政策附件”:http://www.w3.org/TR/ws-policy-attach/#ExternalPolicyAttachment

票数 1
EN

Stack Overflow用户

发布于 2010-09-10 03:08:35

从生成的WSDL链接外部WS-Policy需要做什么?除非它与绑定中的WCF安全设置相匹配(在这种情况下,它已经包含了所需的策略元素),否则它不会真正起作用。

如果您仍然热衷于将外部ws-policy强制到生成的WSDL中,那么可以使用自定义的IWsdlExportExtension实现来实现。

票数 0
EN

Stack Overflow用户

发布于 2014-10-18 19:53:51

为了在你的WSDL文档上有<wsp:Policy..,你必须首先在你的web配置文件上有HTTPS绑定。

因此,如果您使用的是https,则可以添加

服务节点中的基地址:

代码语言:javascript
复制
      <baseAddresses>
        <add baseAddress="http://yourdomain.com/"/>
        <add baseAddress="https://yourdomain.com/"/>
      </baseAddresses>

然后添加基本的HTTPS绑定节点:

代码语言:javascript
复制
  <basicHttpsBinding>
    <binding name="BasicHttpsBinding_Name">
      <security>
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </basicHttpsBinding>

此外,您还应该具有如下所示的端点:

代码语言:javascript
复制
  <endpoint address="" binding="basicHttpsBinding" 
            bindingConfiguration="BasicHttpsBinding_Name"
            contract="NameSpace.Name" name="BasicHttpsBinding_Name" />

通过编译您的服务,策略节点将出现在您的WSDL上。

我希望它能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3679065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档