【问题标题】:IIS Windows Authentication 401 UnAuthorizedIIS Windows 身份验证 401 未经授权
【发布时间】:2018-07-09 08:36:14
【问题描述】:
我有一个要使用 Windows 身份验证的子应用程序。
我希望当用户第一次到达该页面时,即使在域中也能弹出登录框。
当我关闭内核模式身份验证时,会弹出登录框,但在 3 次登录尝试后失败并出现错误 401 Not Authorized。
如果我打开它,它甚至不会要求输入密码,我相信这是因为计算机位于服务器域中并且凭据是自动传递的。
是否有可能为所有用户(包括域用户)显示登录表单?
下图中是我的服务器配置。
【问题讨论】:
标签:
asp.net
authentication
iis
windows-authentication
【解决方案1】:
Windows 身份验证通常由 IIS 处理。这是它的工作方式:
- 客户端请求页面。
- IIS 返回 HTTP 401 响应,标头表明它接受 Windows 身份验证。
- 客户端的浏览器会使用用户凭据自动重新发送请求(只要站点是受信任的)。
- IIS 验证用户并将凭据传递给应用程序。
这一切都是为了无缝而设计的。
如果您希望始终提示用户输入凭据,那么:
- 确保您的站点不受信任(不在 Internet 选项受信任站点或 Intranet 站点中)。但您可能无法做到这一点。
- 不要使用 Windows 身份验证。使用表单身份验证并创建一个登录页面,用户可以在其中输入他们的凭据。但这意味着您必须自己在代码中针对 Windows 或 Active Directory 验证凭据。
如果您使用 #2,那么还要确保在您的网站上使用 SSL,因为密码将以纯文本形式发送。
【解决方案2】:
您可以使用基本身份验证。它将提示用户输入凭据,一旦输入,它将为您提供无缝体验。
但是,基本身份验证的缺点是它将密码以纯文本形式发送到服务器。您可以使用 SSL 证书对这些信息进行加密。