iframe - 使用 iframe 执行 SSO 并访问身份验证墙后面的页面

Lef*_*eff 10 iframe single-sign-on gooddata cross-origin-embedder-policy cross-origin-resource-policy

我有 2 个域,一个托管我的应用程序 - myapp,另一个托管 gooddata 仪表板 - analytics.myapp。我想将gooddata仪表板嵌入到我的应用程序的页面中。我已将frame-src设置为允许来自仪表板所在域的请求:

set $CSP "${CSP}; frame-src https://analytics.myapp.com/";

add_header Content-Security-Policy ${CSP};
Run Code Online (Sandbox Code Playgroud)

我还在CORS主机上设置了analytics.myapp允许来自myapp域的请求:

ingress:
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/cors-allow-origin: "http://localhost:10000, https://myapp.com"
Run Code Online (Sandbox Code Playgroud)

我想将包含来自域的内容的 iframe 嵌入到域的analytics.myapp页面中,只有在您通过身份验证后才能看到该内容myapp。现在,当我加载内容时,iframe 正在显示登录页面,如果我尝试通过 iframe 登录,则会收到错误消息:

Blocked autofocusing on a <input> element in a cross-origin subframe.
Run Code Online (Sandbox Code Playgroud)

如果我使用不同选项卡中的用户登录,analytics.myapp则无法正常工作,因为 cookie 不会发送到域myapp。我发现可以通过他们的文档中的 api 进行身份验证。他们还有关于如何嵌入仪表板的文档,但为了查看嵌入式仪表板文档说:

用户必须是工作区成员才能查看嵌入式仪表板。

我还没有实现 SSO(单点登录),但我想知道一旦实现它,CORS 还会有问题吗?我可以想象,一旦我实现了这个,来自myapp域的用户进入一个页面,其中我有一个带有嵌入式仪表板的 iframe analytics.myapp,他们将被重定向到一个身份验证端点,在该端点上myapp用户将通过 SSO 进行身份验证analytics.myapp并重定向回来与analytics.myapp用户数据。

现在这是正确的流程吗?是否可以与 iframe 一起使用?这是否存在任何 CORS 问题?可以这样实现吗?