启用 API 身份验证时,Apache 气流 REST API 调用失败并出现 403 禁止

Posted

技术标签:

【中文标题】启用 API 身份验证时,Apache 气流 REST API 调用失败并出现 403 禁止【英文标题】:Apache airflow REST API call fails with 403 forbidden when API authentication is enabled 【发布时间】:2020-07-25 02:22:55 【问题描述】:

Apache Airflow REST API 失败并出现 403 禁止调用:

“/api/实验/测试”

airflow.cfg 中的配置

[网络服务器]

验证 = 真 auth_backend = airflow.contrib.auth.backends.password_auth

[API]

rbac = 真 auth_backend = airflow.contrib.auth.backends.password_auth

设置完这一切后,docker 镜像被构建并作为 docker 容器运行。

按如下方式创建气流用户:

airflow create_user -r Admin -u admin -e admin@hpe.com -f Administrator -l 1 -p admin

使用 Web UI 凭据登录可以正常工作。

无法登录 REST API。 用于身份验证的 HTTP 标头: 授权 BASIC YWRtaW46YWRtaW4=

气流版本:1.10.9

【问题讨论】:

【参考方案1】:

通过以下方式创建用户,我们可以使用凭据访问 Airflow 实验 API。

import airflow
from airflow import models, settings
from airflow.contrib.auth.backends.password_auth import PasswordUser
user = PasswordUser(models.User())
user.username = 'new_user_name'
user.email = 'new_user_email@example.com'
user.password = 'set_the_password'
session = settings.Session()
session.add(user)
session.commit()
session.close()
exit()

通过使用“airflow create_user”命令创建用户,我们无法访问 Airflow Experimental API。

【讨论】:

sn-p 就像一个魅力 :) 似乎 web-server 和 api 用户实体是不同的东西。这应该有更好的记录我花了几个小时来弄清楚这一点:( 这行得通。 Ty 表示此代码 sn-p。我花了好几个星期来修复这个问题。

以上是关于启用 API 身份验证时,Apache 气流 REST API 调用失败并出现 403 禁止的主要内容,如果未能解决你的问题,请参考以下文章

使用 Airflow API 进行 JWT 身份验证

启用 CORS 的 Web Api 2 facebook 身份验证

Google Data Studio:如何使用 2 KEYS 为 API 连接器启用身份验证

如何在 ASP.Net Web API 中为特定控制器启用 Windows 身份验证

如何使用符合 JAX-RS 2.0 的 RESTEasy 客户端 API 启用 NTLM 身份验证?

当 HTTP 方法是 Apache .htaccess 上的 OPTIONS 时,如何避免请求基本身份验证?