如何在iframe中设置网络资源的域

时间:2018-06-20 18:42:02

标签: css web flask airflow

我目前正在将apache气流(烧瓶应用程序)与身份验证服务集成为微型应用程序。身份验证服务将气流加载到iframe中。我能够将气流的登录页面加载到身份验证服务ui的iframe中。

登录页面反过来包含CSS和其他外部资源。如何强制从特定位置加载它们。我目前有一个气流登陆页面,该页面呈现了包含css依赖关系的html。

<link href="/static/bootstrap-theme.css" rel="stylesheet">

依次发出这样的请求authentictaion_domain.com/static/bootstrap-theme.css

我想要的是像这样通过Authetication服务域加载的资源 authentictaion_domain.com/my-microapp/static/bootstrap-theme.css

有什么方法可以使它正常工作,而无需对气流ui中的所有路径进行重大更改。

1 个答案:

答案 0 :(得分:0)

我不是烧瓶专家,但是我想这应该是在气流初始化烧瓶应用程序时更新static_folder路径的问题。

https://github.com/apache/incubator-airflow/blob/master/airflow/www/app.py#L73

静态资产的路径是通过烧瓶url_for()函数生成的

话虽如此,我想问一下,您的身份验证服务会反向代理气流Web服务器吗?还是只是带有iframe的受保护UI?如果是后者,则并不能真正确保气流。如果有人偶然发现了气流Web服务器URL,他们仍然可以在iframe之外访问它。

我确实要提到气流确实supports different methods of authentication.,所以如果您有自己的主站点用户系统,则可以编写一个后端以对该数据库进行身份验证以访问气流,并设置airflow.cfg使用该后端。

在工作的Astronomer,我写了a custom backend,这是我们在SaaS平台中使用的气流分支。当气流提示登录时,它将根据我们的API发出身份验证请求。如果有效,它将在气流中创建一个烧瓶用户,并使用匹配的电子邮件地址,并将该用户登录。