Apache SuperSet中的Oauthauthentication

我试图通过Oauth2在Apache SuperSet中启用身份validation。

由于它build立在支持OAuth的Flask AppBuilder的基础之上,并且非常容易设置和使用,所以它应该很简单。

我设法使以下两个示例能够与Twitter Oauthconfiguration无缝协作:

  1. FAB OAuth示例
  2. flask-oauthlib的例子

现在我试图将相同的configuration应用于SuperSet。

docker

由于我不能手动构build项目的几个神秘的python错误(在Windows 7 / Ubuntu Linux和Python版本2.7和3.6尝试),我决定使用这个Superset泊坞窗图像 (安装和工作正常),并注入我的configuration正如文档所build议的那样:

按照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身份validation的痕迹。

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

你必须改变superset_config.py。 看看这个例子configuration,它适用于我。

 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:pass@host: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' } } ] 
Interesting Posts