作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个简单的 WCF 演示应用程序,它有两个控制台项目——主机和客户端。两者都在我的机器上运行(win 7 box)。我正在使用 netTcpBinding,它使用 Windows 身份验证。
问题是身份验证正在从 kerberos 降级到 NTLM,我不知道为什么。
如果我使用
<clientCredentials>
<windows allowNtlm="true" />
</clientCredentials>
false
,我得到以下异常:
SecurityNegotiationException: The remote server did not satisfy the mutual authentication requirement.
<client>
<endpoint address="net.tcp://dev7.HurrDurr.com:12345/MyService"
binding="netTcpBinding"
bindingConfiguration="MyBindingConfigurationLol"
behaviorConfiguration="HurrDurrServiceEndpoint"
contract="ShaolinCore.ICommunicationService">
<!-- start changes here -->
<identity>
<userPrincipalName value="myusername@mydomain"/>
</identity>
<!-- end changes here -->
</endpoint>
</client>
最佳答案
当我在 IIS4、5 和 6 开发团队工作时,我们经常遇到这种情况!要使 Curb 起作用,您需要满足以下条件:
1)双方都支持curb(今天所有支持的Windows版本都支持Curb)
2) 机器授权到 Active Directory
3) 为服务器端点注册的服务主体名称 (SPN)。在“过去的美好时光”中,您必须使用 SetSPN.exe 手动完成此操作。 SPN 只是 Curb 将连接到的端点;它需要这些数据来支持相互认证。大多数应用程序会为您调用 appprop API 来完成这项工作 (DsWriteAccountSpn)
如果上述步骤中的任何一个不正确,Windows 通常会默认为 NTLM,它只为您提供客户端身份验证。
希望有帮助!
- 迈克尔
关于wcf - 为什么 kerberos 在 WCF 中默认为 NTLM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2319001/
我是一名优秀的程序员,十分优秀!