如何在 WCF Web 服务中实施策略?
How to implement Policy in WCF web service?
我想创建一个 Web 服务,它的功能与给定的 Web 服务相同,仅取决于服务描述语言。
我设法创建了完全相同的服务,除了元数据的这一部分:
<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>
那是什么?以及如何用服务描述语言生成它?
我想您搜索的是此处描述的 "External Policy Attachment":http://www.w3.org/TR/ws-policy-attach/#ExternalPolicyAttachment
要在您的 WSDL 文档中使用 <wsp:Policy..
,您应该首先在您的 Web 配置文件中使用 HTTPS 绑定。
所以如果你使用的是 https 那么你可以添加
您服务节点中的基址:
<baseAddresses>
<add baseAddress="http://yourdomain.com/"/>
<add baseAddress="https://yourdomain.com/"/>
</baseAddresses>
然后添加基本的 HTTPS 绑定节点:
<basicHttpsBinding>
<binding name="BasicHttpsBinding_Name">
<security>
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpsBinding>
您还应该像下面这样声明终点:
<endpoint address="" binding="basicHttpsBinding"
bindingConfiguration="BasicHttpsBinding_Name"
contract="NameSpace.Name" name="BasicHttpsBinding_Name" />
并且通过编译您的服务,策略节点将出现在您的 WSDL 中。
另请参阅一些解决方案 here
希望对你有帮助。
我想创建一个 Web 服务,它的功能与给定的 Web 服务相同,仅取决于服务描述语言。 我设法创建了完全相同的服务,除了元数据的这一部分:
<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>
那是什么?以及如何用服务描述语言生成它?
我想您搜索的是此处描述的 "External Policy Attachment":http://www.w3.org/TR/ws-policy-attach/#ExternalPolicyAttachment
要在您的 WSDL 文档中使用 <wsp:Policy..
,您应该首先在您的 Web 配置文件中使用 HTTPS 绑定。
所以如果你使用的是 https 那么你可以添加 您服务节点中的基址:
<baseAddresses>
<add baseAddress="http://yourdomain.com/"/>
<add baseAddress="https://yourdomain.com/"/>
</baseAddresses>
然后添加基本的 HTTPS 绑定节点:
<basicHttpsBinding>
<binding name="BasicHttpsBinding_Name">
<security>
<transport clientCredentialType="None" />
</security>
</binding>
</basicHttpsBinding>
您还应该像下面这样声明终点:
<endpoint address="" binding="basicHttpsBinding"
bindingConfiguration="BasicHttpsBinding_Name"
contract="NameSpace.Name" name="BasicHttpsBinding_Name" />
并且通过编译您的服务,策略节点将出现在您的 WSDL 中。
另请参阅一些解决方案 here
希望对你有帮助。