首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache SuperSet中的Oauth认证

Apache SuperSet中的Oauth认证
EN

Stack Overflow用户
提问于 2017-07-06 15:09:15
回答 2查看 9.7K关注 0票数 2

我试图通过Apache SuperSet通过Oauth2启用身份验证。

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

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

  1. FAB OAuth实例
  2. 烧瓶-oauthlib示例

现在,我正试图将相同的配置应用于SuperSet。

码头

由于我无法为几个神秘的python错误手工构建这个项目(在Windows7/Ubuntu上试用,使用PythonVersion2.7和3.6),所以我决定使用这个超级对接图像 (安装和工作正常),并按照文档的建议注入我的配置

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

我添加了一个superset_config.py (仅在一个文件夹中),并通过向Dockerfile添加以下内容来挂载它:

代码语言:javascript
复制
ADD config .superset/config

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

代码语言:javascript
复制
COPY superset_config.py .superset

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

有人能查出我做错了什么吗?

EN

回答 2

Stack Overflow用户

发布于 2017-09-26 07:55:26

你必须改变superset_config.py。看看这个例子配置,它对我有效。

代码语言:javascript
复制
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'
          }
       }
]
票数 5
EN

Stack Overflow用户

发布于 2021-05-07 00:21:08

2021年更新: FAB OAuth提供程序模式似乎在这个答案之后发生了一些变化。如果要使用Superset >= 1.1.0执行此操作,请尝试以下操作:

代码语言:javascript
复制
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安全文档抄袭下一次有漂移。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44952750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档