Airflow-如何使用REST API的安全授权

问题描述 投票:1回答:1

简介:

大家好,我正在尝试使用Airflow的REST API通过外部触发器激活DAG,例如:

POST: http://{{url}}:{{port}}/api/experimental/dags/MY_DAG_ID/dag_runs

headers = {
        'Content-Type': 'application/json',
        'Cache-Control': 'no-cache',
    }

问题:

它工作得很好(答案:状态200),但是我需要一些安全性,因为它不能向公众开放,因此我阅读了API身份验证,可以在[C0上设置auth_backend ]的工作原理,就像用于Web界面的密码验证一样。

airflow.cfg

但是现在,答案是((401-未经授权),我不知道如何配置REST API以使用具有这种安全性的外部触发器。

  • 是否有必要在标头上传递我的[[user和password以起作用?
  • 我该怎么做?
  • 假设存在一个

    用户:管理员

  • 通过:管理员权限:管理员

链接:

    [api] auth_backend = airflow.contrib.auth.backends.password_auth

rest authentication post airflow
1个回答
0
投票
您必须使用字符串user:pass传递带有基数为64的标头的授权标头

您可以在这里查看它是如何发生的:https://airflow.apache.org/docs/stable/api.html#authentication

https://github.com/apache/airflow/blob/029c84e5527b6db6bdbdbe026f455da325bedef3/airflow/contrib/auth/backends/password_auth.py#L205

示例用法:

header = request.headers.get("Authorization") if header: userpass = ''.join(header.split()[1:]) username, password = base64.b64decode(userpass).decode("utf-8").split(":", 1)

https://github.com/apache/airflow/blob/7cba83333c5227ce37967c65d189a5e994898c68/tests/www/api/experimental/test_password_endpoints.py

© www.soinside.com 2019 - 2024. All rights reserved.