I’ve been grappling around to get the Google SSO working on Airflow. There is limited documentation online or a successful case. This post shares how this can be achieved. And this post assumes that you’ve already setup airflow in a chosen environment using official helm chart from Airflow documentation.
Airflow PiPy with google_auth extra#
Whichever way you are using to build the airflow custom image, make sure to include below package.
pip3 install apache-airflow[google_auth]
Create OAuth 2.0 credentials on Google cloud console#
Head over to your Google cloud console and create OAuth 2.0 credentials by providing the required details.
Most notable of them being redirect_uri
.
Download the credentials json file that includes information like client_id
, client_secret
etc.
Changes to your values.yaml#
config:
webserver:
authenticate: True
auth_backend: airflow.contrib.auth.backends.google_auth
google:
client_id: ''
client_secret: ''
oauth_callback_route: '' #where to redirect after a successful login
domain: company.com
prompt: <One of : consent, select_account, none or ''>
webserver:
webserverConfig: |-
from flask_appbuilder.security.manager import AUTH_OAUTH
AUTH_TYPE = AUTH_OAUTH
AUTH_USER_REGISTRATION = True
AUTH_USER_REGISTRATION_ROLE = 'Viewer' # first user may be Admin
OAUTH_PROVIDERS = [{
'name':'google',
'token_key':'access_token',
'icon':'fa-google',
'remote_app': {
'api_base_url':'https://www.googleapis.com/oauth2/v2/',
'client_kwargs':{
'scope': 'email profile'
},
'access_token_url':'https://accounts.google.com/o/oauth2/token',
'authorize_url':'https://accounts.google.com/o/oauth2/auth',
'request_token_url': None,
'client_id': <replace with google client id>,
'client_secret': <replace with google secret>,
}
}]
Helm upgrade or install#
Apply the changes and do a logout if required and try to test the login flow with google!