匿名之前的IIS Windows身份验证

Phi*_*ill 9 windows iis forms-authentication windows-authentication

我有一个网站,我想允许表格和Windows Auth for.我的问题是,当您设置IIS以允许匿名(表单身份验证为必需)和Windows身份验证时,浏览器将不会发送用户的网络凭据.

它只使用匿名登录.在IE8或IIS中是否有任何方法让它尝试Windows Auth 1st然后再回到Anonymous?

谢谢你的帮助.

bob*_*nce 11

您不能要求HTTP身份验证(无论是基本身份验证还是集成Windows身份验证),而不会在没有凭据的情况下弹出身份验证对话框.

因此,通常对于混合HTTP-auth + cookie-auth方法,您可以为站点的大部分启用匿名和经过身份验证的访问,但只允许对一个特定脚本进行身份验证访问.

当用户访问没有任何一种身份验证的页面时,您会吐出一个页面,其中包含基于cookie的身份验证的登录表单,以及指向仅允许经过身份验证访问的一个URL的链接.用户可以填写表单以获取cookie和表单身份验证,或者点击链接以使用HTTP身份验证登录.

如果用户关注该链接,他们将获得401响应,并且必须通过auth对话框提供HTTP身份验证,或者可能使用集成Windows身份验证自动提供.一旦发生这种情况,浏览器将开始向每个未来页面提交相同的凭据,因此IIS将解码凭据,以便REMOTE_USER在运行主站点脚本时提供预期.

浏览器只会将凭据提交到与401脚本相同的目录中的页面或其子目录.因此,最好将HTTP-auth-required脚本放在根目录中,例如as /login.aspx.

但是,有一些浏览器不会自动提交其他页面的凭据,并且401在使用凭据再次发送请求之前要求每个HTTP请求首先响应.这使得optional-auth和hybrid-auth方案变得不可能(以及使受保护站点的浏览速度慢得多!).唯一能做到这一点的现代浏览器是Safari.您可能不在乎,因为Safari对集成Windows身份验证的支持传统上仍然不稳定,它仍然可以使用表单+ cookie auth类型.