Airflow Google身份验证未按预期工作

Airflow Google身份验证未按预期工作,airflow,google-authentication,Airflow,Google Authentication,我遵循了文件中提供的步骤: 完成所有步骤并重新启动Web服务器后。我看不出登录页面有什么不同,它仍然要求我进行密码验证。我不知道如何在网页上获得谷歌登录选项。我没有在Web服务器日志上得到任何错误 Configuration=> airflow.cfg: authenticate = True #auth_backend = airflow.contrib.auth.backends.password_auth auth_backend = airflow.contrib.auth.bac

我遵循了文件中提供的步骤:

完成所有步骤并重新启动Web服务器后。我看不出登录页面有什么不同,它仍然要求我进行密码验证。我不知道如何在网页上获得谷歌登录选项。我没有在Web服务器日志上得到任何错误

Configuration=> airflow.cfg:
authenticate = True
#auth_backend = airflow.contrib.auth.backends.password_auth
auth_backend = airflow.contrib.auth.backends.google_auth

[google]
client_id = <client id>
client_secret = <secret key>
oauth_callback_route = /oauth2callback
domain = <domain_name>.com
Configuration=>afflow.cfg:
验证=真
#auth\u backend=afflow.contrib.auth.backends.password\u auth
auth_backend=afflow.contrib.auth.backends.google_auth
[谷歌]
客户端id=
客户端密码=
oauth_callback_route=/oauth2callback
域=.com

因为我启用了RBAC,所以我必须更改webserver_config.py文件,以便oauth使用RBAC。一旦启用RBAC并重新启动web服务器,就会创建webserver_config.py文件

  • AUTH_TYPE=AUTH_OAUTH(启用Google身份验证/Github身份验证)
  • 必须设置OAUTH_提供程序示例:
  • 验证用户注册=真
  • AUTH\u USER\u REGISTRATION\u ROLE=“已定义角色/Admin/Public”
  • 一旦我们配置好它并重新启动web服务器,google登录选项就会出现在登录页面上。
    作为参考:

    所以我发现,如果我们像上面描述的那样使用
    webserver\u config.py
    ,就不需要再在
    aiffort.cfg
    中添加
    [google]
    部分了。这只是多余的。总而言之,我的设置是:

    airflow.cfg:

    authenticate = True
    auth_backend = airflow.contrib.auth.backends.google_auth
    
    rbac = True
    
    webserver_config.py:

    from flask_appbuilder.security.manager import AUTH_OAUTH
    
    AUTH_TYPE = AUTH_OAUTH
    
    AUTH_USER_REGISTRATION = True
    
    AUTH_USER_REGISTRATION_ROLE = "Admin"
    
    OAUTH_PROVIDERS = [{
        'name':'google',
        'whitelist': ['@yourdomain.com'],  # optional
        'token_key':'access_token',
        'icon':'fa-google',
        'remote_app': {
            'base_url':'https://www.googleapis.com/oauth2/v2/',
            'request_token_params':{
                'scope': 'email profile'
            },
            'access_token_url':'https://oauth2.googleapis.com/token',
            'authorize_url':'https://accounts.google.com/o/oauth2/auth',
            'request_token_url': None,
            'consumer_key': '<your_client_id>',
            'consumer_secret': '<your_client_secret>',
        }
    }]
    
    来自flask\u appbuilder.security.manager导入验证\u OAUTH
    AUTH_TYPE=AUTH_OAUTH
    验证用户注册=真
    验证用户注册角色=“管理员”
    OAUTH_提供程序=[{
    'name':'google',
    “白名单”:['@yourdomain.com'],#可选
    “令牌密钥”:“访问令牌”,
    '图标':'fa-google',
    “远程应用程序”:{
    '基本url':'https://www.googleapis.com/oauth2/v2/',
    “请求令牌参数”:{
    “范围”:“电子邮件配置文件”
    },
    “访问令牌url”:https://oauth2.googleapis.com/token',
    '授权url':'https://accounts.google.com/o/oauth2/auth',
    “请求\u令牌\u url”:无,
    “消费者密钥”:“,
    “消费者的秘密”:“,
    }
    }]
    

    我必须对第一个用户使用
    AUTH\u USER\u REGISTRATION\u ROLE=“Admin”
    ,否则该用户甚至无法登录,并在错误页面中显示“重定向过多”。

    您可能已经这样做了,但您需要确保使用的是基于FAB的前端(1.10.0中新增,1.10.3中默认)。我发现update.md在寻找新功能时非常有用:谢谢@7yl4r。这是否意味着RBAC设置为true时,我们无法启用google身份验证?相反;要使用此身份验证方法,您必须在
    aiffair.cfg
    中具有
    rbac=True
    ,并且必须使用aiffair
    1.10+
    。考虑一下这个气流。CFG细节和你的气流版本。我发现在1.10-4我仍然需要<代码> [谷歌]。auth_callback_route=/oauth2callback-如果不进行此登录,则会首先将我带到一个崩溃页面,要求我编辑URL以继续。我唯一的猜测是您没有在Google developer控制台中设置回调。当默认角色仅为用户提供
    Public
    权限后,似乎会发生太多重定向搜索了一整天,这终于是我一直在寻找的设置配置。文件中没有提到需要创建/更新webserver_config.py,这真是令人讨厌。