我在我的react应用程序上使用adal.js(使用react-adal包装器)。我将我的应用程序配置为与ADFS 2016服务器一起使用(在内部),并且身份验证过程运行良好,但是在ADFS SSO cookie过期后,当客户端(在隐藏的iframe中)发送续签令牌请求时,浏览器会显示控制台出现以下错误:拒绝在新框架中显示'https://myadfs/adfs/ls/SAMLRequest= ...',因为它将'X-frame-options'设置为拒绝。
为了重新进行身份验证,用户需要刷新页面(F5)。
此问题是否有解决方案/解决方法?
答案 0 :(得分:0)
出于安全原因,ADFS <= 2016不允许基于iFrame的登录进行任何交互式身份验证。如果用户不需要执行交互式登录(SSO cookie或WIA),则可以使用该功能。
正确的模式(自2016年起)是使用OIDC流登录到应用程序,并使用刷新令牌获取新的访问令牌。
即使在这里,您也需要处理刷新令牌过期的情况,在这种情况下,您将需要在本地存储应用程序上下文(cookie或本地缓存)并启用对ADFS的完全重定向。
ADFS 2019现在具有一个选项,管理员可以在其中通过控制标头为允许iFrame的主机配置选项。
谢谢// Sam(Twitter:@MrADFS)
答案 1 :(得分:0)
就像我在此similar question中所解释的那样,自从最近一次MS更新(大约在2019年5月)以来,ADFS 2016还支持命令行小程序“ Set-AdfsResponseHeaders”:
AppBarLayout
Howeber,我同意SamuelD MSFT的观点,即现在不再使用iFrame集成已不再是一种好习惯。