我希望能够像使用basicHttpBinding一样为自定义绑定指定安全级别。
<customBinding>
<binding name="jsonpBinding" >
....
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</customBinding>
一个人如何正确地做到这一点,因为它不被接受?
答案 0 :(得分:0)
添加authenticationScheme="Negotiate"
解决了这个问题。
将此添加到您的WCF方法
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public int Dosomething()
{
...
}
将此添加到您的WCF web.config
<customBinding>
<binding name="jsonpBinding" >
<jsonMessageEncoding/>
<httpTransport manualAddressing="true" authenticationScheme="Negotiate"/>
</binding>
</customBinding>
将以下内容添加到您的客户端(在我的案例中为MVC Web App)。值得注意的是,svcutil应用程序不会为您的客户端存根生成行为,您必须手动添加它。这让我有一段时间了!
<client>
<endpoint address="..."
binding="customBinding" bindingConfiguration="..."
contract="..." name="..." behaviorConfiguration="ImpersonationBehavior" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="ImpersonationBehavior">
<clientCredentials>
<windows allowedImpersonationLevel="Impersonation"/>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>