9

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

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

add_header Content-Security-Policy ${CSP};

我还在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"

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

Blocked autofocusing on a <input> element in a cross-origin subframe.

如果我analytics.myapp在另一个不起作用的选项卡中使用用户登录,因为 cookie 不会发送到myapp域。我看到可以通过他们文档中的 api 进行身份验证。他们也有关于如何嵌入仪表板的文档,但是为了查看嵌入式仪表板文档说:

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

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

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

4

0 回答 0