最近的规范(例如 LTI 1.3)使用(IdP 发起的)OpenID Connect 来验证工具。在 LTI 中,这些工具通常在不同域的 iframe 中运行。理论上,整个身份验证流程“只是”浏览器重定向的 3 步来回。
为避免 CSRF,建议在使用 OpenID 连接的会话中跟踪状态参数。但是,Safari 在 iframe 中的任何存储可用之前需要跳过不同的箍:可能需要请求存储(在用户交互之后),需要事先在顶级上下文中设置 cookie,...
我能想到的从 IFrame(具有 CSRF 保护)中启动 OpenID 连接的所有解决方案都需要大量代码和检查,包括后端(设置仅 http 会话)和前端(检查和请求 cookie 存储)。我无法想象像 LTI 1.3 这样最新的标准需要如此复杂才能使其正常工作,所以我想知道是否有“推荐”的方法从带有状态参数的 iframe 中进行 OpenID 连接。