是否可以在 IIS7 中的一个 .asmx 页面上同时启用 Windows 身份验证和基本身份验证?
我想要的是:
- 有人调用 webservice
- 如果可能的话,使用 Windows 身份验证(例如从另一个基于 Microsoft 的应用程序调用时)
- 如果客户端不知道如何处理 Windows 身份验证:允许他使用基本身份验证(例如,当客户端是我们无法真正修改的程序时)。
- 如果仍然不起作用,请发送 401
看起来 - 一旦我启用 Windows 身份验证 - 所有基本身份验证尝试都会被忽略/以 401 回答,即使在我启用 Windows 身份验证之前登录凭据有效。
答案1
在 IIS(网站道具)中:
- 取消勾选“匿名访问”
- 勾选“集成 Windows 身份验证”和“基本身份验证”
确保在 web.config 中具有:
<identity impersonate="true"/>
<authentication mode="Windows" />
默认设置为:
<authentication mode="None" />
如果“某人调用 webservice”不在同一台机器上,
那么您将需要在 AD 中配置计算机以进行受信任的委派,以便 Windows 身份验证能够正常工作。
在客户端的 IE
菜单上,工具--> Internet 选项--> 高级--> 在安全下检查“集成 Windows 身份验证”
答案2
这可能过于简单,但似乎您有两个选择:
- Windows 和基本用户通过不同的页面登录
或者
- Windows 用户使用域\用户名登录,基本用户使用服务器名称\用户名登录
这可能是最便宜的解决方案,希望有人能提供更好的解决方案。;)