小编sj.*_*yer的帖子

将 KeyCloak(OpenID Connect) 与 Apache SuperSet 结合使用

我从在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)

openid flask keycloak flask-appbuilder apache-superset

5
推荐指数
1
解决办法
3830
查看次数