【发布时间】:2011-12-23 16:45:31
【问题描述】:
我有一个在 IIS 6 上运行的 WCF 服务,它使用 NTLM 集成了身份验证和模拟。
Web.Config
的相关部分 <system.web>
<identity impersonate="true"/>
<customErrors mode="Off"></customErrors>
</system.web>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
...
</system.web>
...
<wsHttpBinding>
<binding name="wsHttpEndpointBinding">
<security mode="Transport">
<transport clientCredentialType="Ntlm" />
</security>
</binding>
</wsHttpBinding>
我刚刚添加了 aspNetCompatibility,因为我想知道登录的用户是谁(至少就 IIS 而言)。从我所做的几次搜索中,这就是您获取用户的方式。
好吧,在添加那行并发布我的服务器后,我得到了可能是我见过的最愚蠢的错误:
HTTP 请求未经客户端身份验证方案“Ntlm”授权。从服务器收到的身份验证标头是“NTLM”。
我想,“很明显,他们正在做一个非常区分大小写的比较。”因此,我在整个客户端解决方案中搜索了 Ntlm,并用 NTLM 替换了所有非变量事件。没有运气。
我的主要目标当然是让任何用户通过 IIS+NTLM 进行身份验证。如果我以错误的方式去做,我很高兴知道更简单/更好的方式。否则,我如何告诉我的客户(或我的服务器)可以继续进行身份验证?
【问题讨论】:
-
所以您的传输现在是 clientCredentialType="NTLM" 并且您更新了客户端的配置文件?
标签: vb.net wcf authentication ntlm