ADFS 身份验证 - IE8 有效,Chrome 失败

Posted

技术标签:

【中文标题】ADFS 身份验证 - IE8 有效,Chrome 失败【英文标题】:ADFS authentication - IE8 works, Chrome fails 【发布时间】:2011-07-23 03:04:17 【问题描述】:

所以,为 ADFS 2.0 身份验证配置网站...

对于 IE - 它工作正常并且验证正确

对于 Chrome - 它到达重定向到 AD FS 服务器...要求进行身份验证但无法进行身份验证。

我尝试使用 fiddler 请求,但它没有显示任何有趣的内容 - 所以表明我们重定向到 adfs 进行身份验证,仅此而已

可能是什么?为什么无法对 chrome 进行身份验证

谢谢

【问题讨论】:

【参考方案1】:

在事件查看器中,您将看到带有“状态:0xc000035b”的“审核失败”事件。您可以通过关闭 adfs/ls Web 应用程序的“扩展保护”来规避此问题。

网络上有几篇关于此的文章,例如 Microsoft 的 AD FS 论坛上的 "0xc000035b error during windows integrated login" 线程。引用:

要关闭扩展保护,打开 AD FS 服务器,启动 IIS 管理器, 然后,在左侧树视图中, 访问站点 -> 默认网站 -> adfs -> ls。一旦你选择了 “/adfs/ls”文件夹,双击 身份验证图标,然后右键单击 Windows 身份验证并选择 高级设置... 在高级 设置对话框,选择关闭 扩展保护。

这个问题发生在我知道的几种情况下:使用 Firefox 3.5+ 或 Chrome 时,使用我手头没有详细信息的某些特定 NTLM 配置时,以及使用 Fiddler 时(请参阅"AD FS 2.0: Continuously Prompted for Credentials While Using Fiddler Web Debugger" TechNet文章帖子,以及包含更多技术背景信息的 "Fiddler and Channel-Binding-Tokens" 博客帖子)。

(请注意,我在任何地方都找不到任何信息,如何在不关闭“扩展保护”的情况下从例如 Google Chrome 和 Firefox 3.5+ 对 AD FS 进行 NTLM 身份验证。我的意思是,互联网资源管理器与“扩展保护”一起使用,为什么 Chrome 或 Firefox 不使用?或者这是 Chrome/Firefox 实施错误/限制,例如,在他们使用 Windows NTLM 库时?)

【讨论】:

感谢您提供信息丰富的回复 - 我已经为这个问题苦苦挣扎好几天了! 作为更新.. 适用于 32 位 Windows 上的 Firefox(所有版本)和 Chrome。仅在 64 位 Windows 上的 Chrome 上失败(所有版本.. Vista/7/8/8.1)。 Chrome 本身仅在 Windows 上提供 32 位版本。 您在 Chrome 32 位和 64 位中看到的差异可能由 this answer 解释。【参考方案2】:

来自微软:http://technet.microsoft.com/en-us/library/hh852537.aspx

除非和直到 Firefox、Google Chrome 和 Safari 支持扩展 身份验证保护,推荐的选项是安装 并使用 Internet Explorer 10 或更高版本。如果你想使用单 使用 Firefox、Google Chrome 或 Safari 登录 Office 365,那里 是另外两个解决方案: (1) 卸载扩展保护补丁 从您的计算机。 (2) 更改扩展保护设置 Active Directory 联合服务 2.0 服务器。看 TechNet Set-ADFSProperties 页面上的“ExtendedProtectionTokenCheck” 了解详情。

【讨论】:

【参考方案3】:

关闭扩展保护不是答案。您添加 chrome 以便 adfs 可以识别它,然后将该站点添加到受信任列表中。

确保 adfs 支持 chrome。 因此,如果您运行以下命令:

$a=Get-Adfsproperties 
$a.WIASupportedUserAgents

然后您将 chrome 添加到列表中。

Set-ADFSProperties -WIASupportedUserAgents @("MSIE 6.0", "MSIE 7.0", "MSIE 8.0", "MSIE 9.0", "MSIE 10.0", "Trident/7.0", "MSIPC", "Windows Rights Management Client", "Mozilla/5.0") 

现在,我们需要告诉 Chrome,它应该允许该站点的 Windows 集成身份验证。

为此,您需要转到设置: 点击高级 点击代理设置 它应该打开您的 IE 属性。单击安全并选择“本地 Intranet”并在此处添加您的 ADFS 的联合服务名称。 单击 IE 属性下的关闭和应用。 重新启动 Chrome,下次您尝试访问该网站时,它不会要求您提供凭据。

这是一个在工作中提出的解决方案,允许在不禁用扩展保护的情况下使用 Chrome 进行 SSO。为 MS 支持干杯。

【讨论】:

我认为这适用于 ADFS 3.0,但不适用于 ADFS 2.0 我们正在运行 ADFS 3.0,这对我不起作用。还有其他人在这方面取得了成功吗? Kevin:这是针对 ADFS3.0 的。 teleute00:这就是我目前在工作中的部署方式。您是否创建了组策略以将联合名称添加到受信任的站点列表?

以上是关于ADFS 身份验证 - IE8 有效,Chrome 失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 ADAL 从 UWP 中的 ADFS 获取 UserInfo

在 ASP.Net 应用程序上结合 ADFS 身份验证和 JWT 承载

使用 ADFS 对 ASP.NET Web Api 进行身份验证

ADFS 3.0 和非声明感知应用程序、身份验证问题

共享点身份验证。如何从 ADFS 获取 SharePoint cookie

使用 AD 身份验证(不是 ADFS)创建 MVC 应用程序