【发布时间】:2011-09-05 16:27:25
【问题描述】:
我有一个允许匿名访问和 Windows 身份验证的 Web 应用程序。
基本上,如果 windows 用户在应用程序的用户列表中,应用程序会尝试通过 windows 身份验证自动登录用户,否则会显示登录屏幕。如果未提供凭据,则应用程序会显示一个登录屏幕,用户可以在其中使用应用程序内部用户登录。
据我所知,Windows 身份验证是一个具有挑战性的协议,因此我必须返回 Unauthorized 以强制浏览器发送凭据。
当机器在我的域内时效果很好。
用户在列表中的我的域中的机器:
- 没有凭据的浏览器发出请求。
- Web 应用自定义授权过滤器拒绝连接(挑战)。
- 浏览器使用 Windows 凭据重新发出请求。
- Web 应用程序验证该 Windows 用户并允许其获取。
用户不在允许列表中的我域中的机器:
- 没有凭据的浏览器发出请求。
- Web 应用自定义授权过滤器拒绝连接(挑战)。
- 浏览器使用 Windows 凭据重新发出请求。
- Web 应用无法验证请求并重定向到登录屏幕。
现在问题来了。
从我的域中取出用户不在允许列表中的机器:
- 没有凭据的浏览器发出请求。
- Web 应用自定义授权过滤器拒绝连接(挑战)。
- 浏览器显示一个 Windows 登录屏幕,它不会重新发出请求。
为什么服务器返回未授权时请求没有重新发出?
如果我关闭身份验证对话框并刷新浏览器,则应用程序会重定向到登录页面。
问候。
【问题讨论】:
标签: asp.net asp.net-mvc windows-authentication ntlm