2017-07-06 968 views
1

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

由于它基于Flask AppBuilder,它支持OAuth并且非常易于安装和使用,所以它很简单。

我设法让两者下面的示例工作seamlessy通过Twitter OAuth配置:

  1. FAB OAuth example
  2. flask-oauthlib examples

现在我试图在同一配置应用到超集。

泊坞

正如我不能手动建立几个神秘的蟒蛇错误的项目(试图在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应用程序的正确的地方最终显示的没有区别:N o Twitter认证的痕迹。

有人可以弄清楚我做错了什么吗?

回答

1

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

import os 
from flask_appbuilder.security.manager import AUTH_OID, 
AUTH_REMOTE_USER, 
AUTH_DB, AUTH_LDAP, AUTH_OAUTH 
basedir = os.path.abspath(os.path.dirname(__file__)) 
ROW_LIMIT = 5000 
SUPERSET_WORKERS = 4 
SECRET_KEY = 'a long and random secret key' 
SQLALCHEMY_DATABASE_URI = ‘postgresql://username:[email protected]:port/dbname’ 
CSRF_ENABLED = True 
AUTH_TYPE = AUTH_OAUTH 
AUTH_USER_REGISTRATION = True 
AUTH_USER_REGISTRATION_ROLE = "Public" 
OAUTH_PROVIDERS = [ 
    { 
     'name': 'google', 
     'whitelist': ['@company.com'], 
    'icon': 'fa-google', 
    'token_key': 'access_token', 
    'remote_app': { 
     'base_url': 'https://www.googleapis.com/oauth2/v2/', 
     'request_token_params': { 
       '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', 
     'consumer_key': 'GOOGLE_AUTH_KEY', 
     'consumer_secret': 'GOOGLE_AUTH_SECRET' 
      } 
     } 
]