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 身份验证的主要内容,如果未能解决你的问题,请参考以下文章