WCF使用Kerberos配置自定义绑定

时间:2011-06-13 17:29:55

标签: c# wcf kerberos

我希望能够像使用basicHttpBinding一样为自定义绑定指定安全级别。

  <customBinding>
    <binding name="jsonpBinding" >      
      ....                
      <security mode="TransportCredentialOnly">
          <transport clientCredentialType="Windows"/>
      </security>
    </binding>
  </customBinding>

一个人如何正确地做到这一点,因为它不被接受?

1 个答案:

答案 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>