Apache SuperSet中的Oauth身份验证

时间:2017-07-06 15:09:15

标签: python docker flask flask-appbuilder apache-superset

我尝试通过Oauth2在Apache SuperSet中启用身份验证。

它应该是直截了当的,因为它建立在支持OAuth的Flask AppBuilder之上,并且非常容易设置和使用。

我设法使以下两个示例与Twitter Oauth配置无缝协作:

  1. FAB OAuth example
  2. flask-oauthlib examples
  3. 现在我尝试将相同的配置应用于SuperSet。

    泊坞

    由于我无法手动为多个神秘的python错误构建项目(在Windows 7 / Ubuntu Linux和Python版本2.7和3.6上尝试过),我决定使用this Superset docker image(安装和工作罚款)并按照docs的建议注入我的配置:

      

    按照Apache Superset提供的说明编写自己的superset_config.py。将此文件放在本地目录中,并将此目录安装到容器内的/home/superset/.superset。

    我添加了superset_config.py(在一个文件夹中,并且单独添加)并通过添加到Dockerfile以下内容来安装它:

    ADD config .superset/config
    

    config是文件夹的名称)或(对于单个文件):

    COPY superset_config.py .superset
    

    在这两种情况下,文件最终都在容器中的正确位置(我使用docker exec /bin/bash检查),但Web应用程序没有显示出任何差异:没有Twitter身份验证的痕迹。

    有人能弄明白我做错了吗?

2 个答案:

答案 0 :(得分:5)

您必须更改superset_config.py。看看这个示例配置,它适用于我。

11313

答案 1 :(得分:0)

2021 年更新:FAB OAuth 提供程序架构似乎自此答案以来发生了一些变化。如果您尝试使用 Superset >= 1.1.0 执行此操作,请尝试以下操作:

OAUTH_PROVIDERS = [
    {
        'name': 'google',
        'icon': 'fa-google',
        'token_key': 'access_token',
        'remote_app': {
            'client_id': 'GOOGLE_KEY',
            'client_secret': 'GOOGLE_SECRET',
            'api_base_url': 'https://www.googleapis.com/oauth2/v2/',
            'client_kwargs':{
              'scope': 'email profile'
            },
            'request_token_url': None,
            'access_token_url': 'https://accounts.google.com/o/oauth2/token',
            'authorize_url': 'https://accounts.google.com/o/oauth2/auth'
        }
    }
]

当然,分出 GOOGLE_KEY 和 GOOGLE_SECRET。其余的应该没问题。这是从 FAB security docs 抄来的,以便下次有漂移时。