Apache Airflow - 添加 Google 身份验证

Posted

技术标签:

【中文标题】Apache Airflow - 添加 Google 身份验证【英文标题】:Apache Airflow - Adding Google Authentication 【发布时间】:2018-08-09 10:49:15 【问题描述】:

我正在尝试在 Airflow 1.9.0 中添加多租户和 Google 身份验证。 我在airflow.cfg中添加了这些行

[webserver]
authenticate = True
filter_by_owner = True
auth_backend = airflow.contrib.auth.backends.google_auth

[google]
client_id = google_client_id 
client_secret = google_client_secret
oauth_callback_route = /oauth2callback
domain = xyz.com

但是当我尝试打开气流主页时,我收到了Error: redirect_uri_mismatch

Request Details
response_type=code
client_id=google_client_id
redirect_uri=**http://my-staging.io:8099/oauth2callback?next=%2Fadmin%2F**
scope=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email

为什么?next=%2Fadmin%2F 会附加到重定向 uri?

【问题讨论】:

【参考方案1】:

%2Fadmin%2F/admin/ 的百分比编码,它是网络服务器仪表板的基本网址,看起来气流正在向查询字符串添加next=value 参数以将用户重定向回他们所在的页面在需要进行身份验证之前。

但是,Airflow 似乎存在与此相关的错误,该错误仅在 3 月修复。 https://github.com/apache/incubator-airflow/commit/eeca38396015589f7dddd67f8836d5d8aa7ac010#diff-f3c3b9b4eb464414c0781a1137172ec1

查询字符串是 URL 的一部分,每个变体都需要列入白名单。任何时候您尝试对 google 进行身份验证都只会允许重定向回列入白名单的 url。但是,在此检查中将忽略查询字符串中的 state 参数。您的版本仍在使用 next 参数。

您可以在 GCP 的 OAuth 凭据中将 http://my-staging.io:8099/oauth2callback?next=%2Fadmin%2F 列入白名单,并假设/期望所有用户身份验证将从 /admin/ 开始,将您的气流版本更新为具有上述提交的版本,或将此提交合并到您的版本中使用。

【讨论】:

嗨,谢谢它有效。虽然我无法将气流升级到不稳定的版本。如果这个 bug 修复在 1.10.0 中可用,我会升级它。 我现在还有 1 个问题,如何让超级用户访问我的气流设置,因为其他开发人员也将使用它。我还需要拥有超级用户访问权限才能查看其他 dag。 Airflow 只是搭载在 Flask 上,因此只需在数据库的 users 表中设置超级用户即可。 Users 表只有 4 个字段 id、username、email 和 password。在哪里赋予任何权利?或者用户表中的所有条目都是超级用户? 嗯,从来没有意识到这一点。在 1.9 及之前的版本中,对气流中的用户访问实际上没有太多控制。带有 RBAC 的新 UI 已合并到 1.10 版本中,据我了解它将在 2.0 中正式发布。不确定它是否在 1.10 中被视为测试版。

以上是关于Apache Airflow - 添加 Google 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

将日志添加到 Airflow 日志

Airbnb Airflow vs Apache Nifi [关闭]

任务调度工具 Apache Airflow 初识

安装 Apache Airflow 后出错

气流添加谷歌云连接

Apache Atlas 和 Airflow 集成