1

我在我的反应应用程序上使用 adal.js(使用 react-adal 包装器)。我将我的应用程序配置为与我的 ADFS 2016 服务器(本地)一起使用,并且身份验证过程工作正常,但是在 ADFS SSO cookie 过期后,当客户端发送更新令牌请求(在隐藏的 iframe 中)时,浏览器显示在控制台出现以下错误:拒绝在新框架中显示“ https://myadfs/adfs/ls/SAMLRequest= ...”,因为它将“X-frame-options”设置为拒绝。

为了重新认证,用户需要刷新页面(F5)。

这个问题有什么解决方案/解决方法吗?

4

2 回答 2

1

出于安全原因,ADFS <= 2016 不允许基于 iFrame 的登录进行任何交互式身份验证。如果用户不需要执行交互式登录(SSO cookie 或 WIA),这将起作用。

正确的模式(因为您是 2016 年)是使用 OIDC 流登录到应用程序并使用刷新令牌来获取新的访问令牌。

即使在这里,您也需要处理刷新令牌过期的情况,您需要在本地存储您的应用程序上下文(cookie 或本地缓存)并启用完全重定向到 ADFS。

ADFS 2019 现在有一个选项,管理员可以通过控制标头来配置他们允许 iFrame 的主机的选项。

谢谢//山姆(推特:@MrADFS)

于 2018-11-20T15:45:30.960 回答
1

就像我在这个类似问题中解释的那样,自从最近的 MS 更新(大约 2019 年 5 月)以来,ADFS 2016 也支持命令行开关“Set-AdfsResponseHeaders”:

Set-AdfsResponseHeaders -RemoveHeaders "X-Frame-Options"

Howeber,我同意 SamuelD MSFT 的观点,即现在使用 iFrame 集成不再是一个好习惯。

于 2019-09-10T16:47:30.707 回答