oauth - Apache Superset 和 Auth0 返回“意外的关键字参数‘范围’”
问题描述
前段时间,我使用 AWS Cognito 成功地将 Superset 身份验证与 Oauth 集成。
现在我正在尝试对 Auth0 做同样的事情,重用以前的配置并根据 Auth0 文档更改端点。
不幸的是,登录失败,Superset 的日志返回以下消息:
2021-10-20 10:30:48,886:ERROR:flask_appbuilder.security.views:Error on OAuth authorize: request() got an unexpected keyword argument 'scope'
这是 Oauth 配置superset_config.py
:
from superset.security import SupersetSecurityManager
import json
import logging
logger = logging.getLogger(__name__)
class CustomSsoSecurityManager(SupersetSecurityManager):
def oauth_user_info(self, provider, response=None):
if provider == 'auth0':
res = self.appbuilder.sm.oauth_remotes[provider].get('userinfo')
if res.raw.status != 200:
logger.error('Failed to obtain user info: %s', res.data)
return
me = json.loads(res._content)
logger.warning(" user_data: %s", me)
prefix = 'Superset'
logging.warning("user_data: {0}".format(me))
return {
'username' : me['email'],
'name' : me['name'],
'email' : me['email'],
'first_name': me['given_name'],
'last_name': me['family_name'],
}
AUTH_TYPE = AUTH_OAUTH
AUTH_USER_REGISTRATION = True
AUTH_USER_REGISTRATION_ROLE = "Public"
AUTH0_URL = os.getenv('AUTH0_URL')
AUTH0_CLIENT_KEY = os.getenv('AUTH0_CLIENT_KEY')
AUTH0_CLIENT_SECRET = os.getenv('AUTH0_CLIENT_SECRET')
OAUTH_PROVIDERS = [{
'name':'auth0',
'token_key': 'access_token',
'icon':'fa-at',
'url': AUTH0_URL,
'remote_app': {
'client_id': AUTH0_CLIENT_KEY,
'client_secret': AUTH0_CLIENT_SECRET,
'request_token_params': {
'scope': 'email openid profile'
},
'response_type': 'token_id',
'base_url': AUTH0_URL,
'access_token_url': os.path.join(AUTH0_URL, 'oauth/token'),
'authorize_url': os.path.join(AUTH0_URL, 'authorize'),
'access_token_method':'POST',
'request_token_url': os.path.join(AUTH0_URL, 'oauth/token'),
'api_base_url': AUTH0_URL,
}
}
]
CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager
我已经为response_type
(code, token, token_id) 尝试了不同的值。
还尝试将其request_token_url
留空,在这种情况下,错误会发生变化,因为用户数据似乎是一个空字典:
2021-10-13 15:52:10,358:WARNING:superset_config: user_data: {}
2021-10-13 15:52:10,358:WARNING:root:user_data: {}
2021-10-13 15:52:10,358:ERROR:flask_appbuilder.security.views:Error returning OAuth user info: 'email'
所以我假设实际上返回了令牌,我不明白为什么 Flask 抱怨属性“范围”。
也试过这个,因为它看起来与我的问题非常相似,但这些配置都不适合我。
解决方案
希望你有两个文件 custom_sso_security_manager.py 和 superset_config.py
您可以从返回中删除以下两行并尝试(custom_sso_security_manager.py)。
'first_name': me['given_name'],
'last_name': me['family_name'],
推荐阅读
- angular - 数据从子级传递到父级时如何刷新父视图
- r - 如何在 R 中创建公式化表?
- powerapps - PowerApps 中是否有可以导出到多行变量的文本输入列表?
- javascript - JQuery ajax 成功回调从不垃圾收集
- javascript - 使用 Javascript 发送图像列表作为响应
- ggplot2 - 为什么我的 y 值没有显示在时间序列(条形图)中?
- flutter - 即使我的应用程序已关闭,我如何显示它的flushbar通知
- tensorflow - 如何从 keras 层的输出中打印数据?
- post - HTTPs 方法 VS Web 套接字
- c - 当输入很大时,c程序出现分段错误