'How do I disable Airflow login for authentication and authorization?

I have a fork of apache airflow which I want to run behind a proxy server. All the authentication will be already handled outside airflow, thus I don't want the customers to login with another set of credentials again. Is there any way to completely remove/disable the authentication from airflow.

Basically, I want to get rid of this initial login screen and allow anyone who reaches airflow to have user (not admin) access. [Worst case admin access is also ok.]

enter image description here



Solution 1:[1]

If anyone is using docker, this worked for me(airflow 2.0.1):

  1. Add a copy of webserver_config.py somewhere in your project.
  2. Uncomment AUTH_ROLE_PUBLIC and set 'Admin' as the value.
AUTH_ROLE_PUBLIC = 'Admin'
  1. Add these settings to your .cfg file.
[webserver]
rbac = False
authenticate = False
  1. In your Dockerfile, add the command to copy the webserver_config.py into the /home/airflow directory. e.g:
ADD airflow/webserver_config.py /home/airflow

Once you spin up the pod, config file should be appended to the directory disabling the authentication.

Solution 2:[2]

Change the authenticate value to false in airflow config file (airflow.cfg) and restart the airflow,

# Set to true to turn on authentication:
# https://airflow.apache.org/security.html#web-authentication
authenticate = False

RBAC,

rbac = False

Solution 3:[3]

For airflow 2.0.1 and later:

In file: $AIRFLOW_HOME/webserver_config.py

add/edit this line (note that by default it says = 'Public' and you need to change it!)

AUTH_ROLE_PUBLIC = 'Admin'

Documentation about this argument: https://airflow.apache.org/docs/apache-airflow/stable/security/webserver.html#web-authentication

The feature was added in this PR/change: https://github.com/apache/airflow/pull/13191 which was merged into airflow 2.0.1

Solution 4:[4]

I created a new user "Admin" with "Admin" role using the following command, and it works for me:

$ airflow users create \
      --username Admin \
      --firstname FIRST_NAME \
      --lastname LAST_NAME \
      --role Admin \
      --email [email protected]

Solution 5:[5]

One way is to disable the RBAC via an environment variable. Make sure you set the following before starting the webserver:

export AIRFLOW__WEBSERVER__RBAC=False

See here for more details. The other answers here will all work as well!

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Rolando Ardon
Solution 2
Solution 3
Solution 4 YNR
Solution 5 Zack Klein