如何解决与 Okta 集成的 Apache 超集
https://github.com/apache/superset/issues/13948
我正在使用 Apache Superset 配置 Okta,但它在身份验证后将我重定向到登录页面,并显示“无效登录”消息。请重试。'
AUTH_TYPE = AUTH_OAUTH
OAUTH_PROVIDERS = [
{
'name': 'okta','icon': 'fa-circle-o','token_key': 'access_token','remote_app': {
'client_id': '0oa8hoe9t1c8LfB1z357','client_secret': 'b8exxJID0BQOXlvMlQa5To5frU4EY7FX3cXDOMLM','api_base_url': 'https://dev-514411.okta.com/oauth2/v1/','client_kwargs': {
'scope': 'openid profile email groups'
},'access_token_url': 'https://dev-514411.okta.com/oauth2/v1/token','authorize_url': 'https://dev-514411.okta.com/oauth2/v1/authorize'
}
}
]
解决方法
从 Flask-AppBuilder 3.2.2 开始,Okta 集成应该是开箱即用的,但事实并非如此。
这对我有用:
在 Okta 的应用设置中,字段 Sign-in redirect URIs
应如下所示:
http://localhost:8088/oauth-authorized/okta
您的 superset_config.py
应包含类似以下内容:
OKTA_BASE_URL = 'https://dev-<your-okta-id>.okta.com'
AUTH_TYPE = AUTH_OAUTH
OAUTH_PROVIDERS = [
{
'name': 'okta','token_key': 'access_token','icon': 'fa-circle-o','remote_app': {
'client_id': OKTA_CLIENT_ID,'client_secret': OKTA_CLIENT_SECRET,'client_kwargs': {
'scope': 'openid profile email groups'
},'access_token_method': 'POST','api_base_url': f'{OKTA_BASE_URL}/oauth2/v1/','access_token_url': f'{OKTA_BASE_URL}/oauth2/v1/token','authorize_url': f'{OKTA_BASE_URL}/oauth2/v1/authorize','server_metadata_url': f'{OKTA_BASE_URL}/.well-known/openid-configuration',},}
]
from custom_sso_security_manager import CustomSsoSecurityManager
CUSTOM_SECURITY_MANAGER = CustomSsoSecurityManager
最后,您的 custom_sso_security_manager.py
必须与您的 superset_config.py
位于同一目录中,应包含如下内容:
from superset.security import SupersetSecurityManager
class CustomSsoSecurityManager(SupersetSecurityManager):
def oauth_user_info(self,provider,response=None):
if provider == 'okta':
user_info = self.appbuilder.sm.oauth_remotes[provider].parse_id_token(
response)
return {
'name': user_info['name'],'email': user_info['email'],'id': user_info['email'],'username': user_info['email']
}
对象 oauth_user_info
返回的重要属性是 email
和 username
,它们将用于匹配您数据库的 ab_user
表记录。如果没有匹配的记录,则登录将失败。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。