我从在Superset 中使用 OpenID/Keycloak 开始,并按照说明进行了所有操作。但是,这是一个旧帖子,并非一切都有效。我还尝试通过将其安装为 FAB 附加组件来实现自定义安全管理器,以便在我的应用程序中实现它,而无需编辑现有的超集代码。
我正在运行 KeyCloak 4.8.1.Final 和 Apache SuperSet v 0.28.1
正如帖子中所解释的,SuperSet 开箱即用并不能很好地与 KeyCloak 配合使用,因为它使用 OpenID 2.0 而不是 KeyCloak 提供的 OpenID Connect。
第一个区别是pull request 4565被合并后,不能再做:
from flask_appbuilder.security.sqla.manager import SecurityManager
Run Code Online (Sandbox Code Playgroud)
相反,您现在必须使用:(根据 UPDATING.md 文件)
from superset.security import SupersetSecurityManager
Run Code Online (Sandbox Code Playgroud)
在上面提到的帖子中,海报展示了如何分别创建管理器和查看文件,但没有说把它放在哪里。我将管理器和视图类放在同一个文件中,命名为manager.py,并将它放在 FAB 附加结构中。
from flask_appbuilder.security.manager import AUTH_OID
from superset.security import SupersetSecurityManager
from flask_oidc import OpenIDConnect
from flask_appbuilder.security.views import AuthOIDView
from flask_login import login_user
from urllib.parse import quote
from flask_appbuilder.views import ModelView, SimpleFormView, expose
import logging
class …Run Code Online (Sandbox Code Playgroud)