我有一个使用ActiveDirectory进行身份验证的ASP.NET网站。
现在,当已认证的用户打开页面时-他会自动被认证。我遇到了一个问题-当未经身份验证的用户(例如,没有定义network.automatic-ntlm-auth.trusted-uris
属性的Mozilla Firefox用户)打开页面时,IIS发送401响应并提示登录\密码。
我希望的是不要提示他输入登录\密码-只显示自定义错误页面,这听起来很简单-认证用户获取所请求的页面,未认证用户被重定向到自定义错误页面。如果使用FormsAuthentication,它应该可以正常工作。
但是,我已经尝试了许多方法,任何Web.config重定向都无效。即使我清除了Response
并把重定向放在那里-我也会得到一个循环,因为此自定义页面(*例如/Error/AccessDenied
)也需要身份验证。将控制器标记为AllowAnonymous
什么也没做。
但是,如果在IIS Manager中启用匿名身份验证,则真实认证的域用户在打开网站时不会被授权。
我该如何解决这个问题?
401 未授权
,并带有www.authenticate: negotiate
(或 NTLM 或两者)头信息。然后客户端(浏览器)再次请求,这次带有Authorization: Negotiate ..hash..
头信息。根据受信任站点的不同,浏览器将始终要求凭据。您无法显示自定义错误,因为第一次响应始终是401
,无论如何。 - Abhitalks