Воздушный поток с авторизацией рекламы застрял в цикле перенаправления при входе в систему

#python #active-directory #airflow

Вопрос:

У меня есть Apache Airflow, использующий Active Directory для аутентификации. У учетной записи привязки нет проблем с подключением. Когда я вхожу в систему, воздушный поток просто продолжает перенаправлять со страницы входа в систему на /домой и обратно на страницу входа снова и снова. Я включил отладку, но это все, что я получаю из журналов

 "GET / HTTP/1.1" 302 -
"GET /home HTTP/1.1" 302 -
"GET /login/?next=http://10.18.0.20:8080/home HTTP/1.1" 302
 

Никаких других ошибок аутентификации не обнаружено.

Конфигурация аутентификации

 basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI=conf.get('core','sql_alchemy_conn')
# Flask-WTF flag for CSRF
WTF_CSRF_ENABLED = True

AUTH_TYPE=AUTH_LDAP
AUTH_LDAP_SERVER='ldap://10.18.1.7:389'
AUTH_LDAP_USER_TLS=False
AUTH_LDAP_UID_FIELD='sAMAccountName'
AUTH_LDAP_SEARCH='ou=users,dc=test,dc=local'
AUTH_LDAP_BIND_USER='cn=svc_airflow,cn=Managed Service Accounts,dc=test,dc=local'
AUTH_LDAP_BIND_PASSWORD='passwordsomething'
# Uncomment to setup Full admin role name
AUTH_ROLE_ADMIN = 'Admin'
AUTH_USER_REGISTRATION=True
 

Ответ №1:

Я думаю, вам также AUTH_USER_REGISTRATION_ROLE нужно указать на роль, которая должна быть назначена для пользователей, прошедших самостоятельную регистрацию, и эта роль должна существовать и должна иметь доступ к пользовательскому интерфейсу.

В прошлый раз у меня была аналогичная ошибка, заключавшаяся в том, что роль была установлена Public , а публичный доступ был отключен, что вызвало цикл inifite. Не уверен, что это ваш случай, но это помогло мне, когда у меня возникла аналогичная проблема.

Ответ №2:

После того, как, наконец, у меня появилось некоторое время, чтобы разобраться в этой проблеме, вот как я ее решил.

Во-первых, я упустил из виду тот факт, что в файле airflow.cfg есть флаг уровня журнала для элемента Flask App Builder для воздушного потока. Я установил это на ОТЛАДКУ, что дало мне лучший результат для устранения неполадок.

Я обновил все свои пакеты, связанные с воздушным потоком, в своем venv.

Как только я это сделал, я повторно инициализировал базу метаданных для Airflow. Я думаю, что эта часть была ключевой. Я видел в журналах, что я успешно привязывался и входил в систему, однако я думаю, что проблема сопоставления групп с ролями вызывала непрерывную проблему перенаправления 302.

Я сузил свой webserver_config.py к следующему:

 import os

#from flask_appbuilder.security.manager import AUTH_DB

from flask_appbuilder.security.manager import AUTH_LDAP
from airflow import configuration as conf

basedir = os.path.abspath(os.path.dirname(__file__))
WTF_CSRF_ENABLED = True

AUTH_TYPE=AUTH_LDAP
AUTH_LDAP_SERVER='ldap://ldapserver:389'
AUTH_LDAP_USER_TLS=False
AUTH_LDAP_BIND_USER='cn=svc_airflow,cn=Managed Service Accounts,dc=testdomain,dc=local'
AUTH_LDAP_BIND_PASSWORD='supersecretpw!'
AUTH_LDAP_UID_FIELD='sAMAccountName'
AUTH_LDAP_SEARCH='ou=TestUsers,dc=testdomain,dc=local'
AUTH_ROLES_MAPPING={
        'cn=Access_Airflow,ou=Groups,dc=testdomain,dc=local':["Admin"],
        'ou=TestUsers,dc=test,dc=local':["User"]
        }
AUTH_ROLE_ADMIN = 'Admin'
AUTH_USER_REGISTRATION=True
AUTH_USER_REGISTRATION_ROLE = 'Admin'
AUTH_ROLES_SYNC_AT_LOGIN=True
AUTH_LDAP_GROUP_FIELD="memberOf"
 

Надеюсь, это, возможно, поможет кому-то еще!