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.]
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
If anyone is using docker, this worked for me(airflow 2.0.1):
AUTH_ROLE_PUBLIC = 'Admin'
[webserver] rbac = False authenticate = False
ADD airflow/webserver_config.py /home/airflow
Once you spin up the pod, config file should be appended to the directory disabling the authentication.
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 admin@example.org
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