我有一个我正在为我们公司的 Intranet 开发的 aspx 网站。我最近添加了一些安全页面,这些页面要求用户成为 Active Directory 中特定组的成员才能查看。我们正在为站点使用 Windows 身份验证(我在 .config 中有 Windows 身份验证)。在 IIS 中启用了 Windows 身份验证,并且禁用了匿名身份验证。我还在项目属性中启用了 NTLM 身份验证。
据我所知,安全工作按预期工作。只有具有正确凭据的用户才能访问安全页面(我通过控制器操作上的 [Authenticate Roles = "bla"] 检查来保护它们)。
我遇到的问题并不是真正的问题,而是更多的烦恼。每当用户登录到站点时,系统都会提示他们登录对话框。我不想要这个。我希望该站点从 Windows 登录中获取他们的凭据,并使用它来确定他们的访问权限。我的印象是 Windows 身份验证自己处理了这个问题,但似乎我错了。
基本上,我怎样才能摆脱登录提示并让 Windows 身份验证自动处理所有相同的功能?
是否有一些我可能需要更改的服务器设置?它可能是我的代码中的东西吗?
如果可能的话,我希望它至少可以与 IE、Firefox 和 Chrome 一起使用。
***2012 年 7 月 23 日更新
感谢大家的建议,不幸的是我还没有让它正常工作。我注意到的一些事情可能有助于提供更多细节
我相当肯定 Intranet 站点在我们的“受信任”站点列表中(我们的网络管理员说它是)。
我只使用 NTLM 身份验证和 NTLM 身份验证。如果我删除 NTLM 身份验证并启用 Negotiate: Kerberos 身份验证,我只会收到 401 - Unauthorized 错误。我可以通过禁用内核模式身份验证来解决这个问题,但是我仍然会收到凭据提示(我不想要)。
如果我在 IE > Internet 选项 > 高级 > 安全中选中“启用集成 Windows 身份验证*”,它会提示我输入凭据,但输入我的凭据不再有效。它会问我三遍,然后将我带到 401 错误页面。
IE9 只询问我的密码并提取我的用户名(好)。Chrome 和 Firefox 提示我输入用户名和密码。