Windows身份验证不会自动获取用户凭据

时间:2012-07-13 15:12:44

标签: c# asp.net authentication active-directory single-sign-on

我有一个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身份验证并启用协商:Kerberos身份验证,我只会收到401 - 未经授权的错误。我可以通过禁用内核模式身份验证来解决这个问题,但后来我仍然得到凭据提示(我不想要)。

  • 如果我在IE中检查“启用集成Windows身份验证*”>互联网选项>高级>安全性,它会提示我输入凭据,但输入我的凭据不再有效。它会问我三次,然后带我去401错误页面。

  • IE9只询问我的密码并提取我的用户名(好)。 Chrome和Firefox提示我输入用户名和密码。

4 个答案:

答案 0 :(得分:1)

查看Internet Explorer /工具/选项/高级。

“安全”下有一个“启用集成Windows身份验证”复选框。

这是否已经过检查?

默认选中它,可以由管理员使用GPO设置:

http://www.windowsecurity.com/articles/configuring-advanced-ie-settings-using-group-policy.html

答案 1 :(得分:0)

IE中有一个允许自动传递的设置。您的系统管理员可以创建组策略并将其推送给所有用户。

我也成功地将Firefox配置为在同一事件中运行,但这将涉及修改个人用户FF配置。

答案 2 :(得分:0)

此行应位于<system.web>元素中的web.config中。

<authentication mode="Windows" />

答案 3 :(得分:0)

我想我会提供一个关于实际解决问题的更新。

我尝试了你们为Internet Explorer设置提供的所有好建议,但最后,结果证明它是一个服务器设置。

将网站的提供商的顺序翻到NTLM,按顺序协商解决了问题。