我目前正在将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中的所有路径进行重大更改。
答案 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发出身份验证请求。如果有效,它将在气流中创建一个烧瓶用户,并使用匹配的电子邮件地址,并将该用户登录。