2017-07-06 227 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' 
      } 
     } 
]