Superset 4.0.2集成LDAP后添加用户时密码输入框缺失求助
问题描述
在Superset 4.0.2中启用LDAP认证后,添加用户界面无法看到密码和确认密码输入框;移除LDAP配置后功能恢复正常。
配置信息如下:
SECRET_KEY = '######################################' import os from superset.security import SupersetSecurityManager from custom_security_manager import CustomSecurityManager from flask_appbuilder.security.manager import ( AUTH_DB, AUTH_LDAP ) AUTH_TYPE = AUTH_LDAP AUTH_LDAP_SERVER = "ldaps://###############:636" AUTH_LDAP_USE_TLS = False AUTH_USER_REGISTRATION = True AUTH_USER_REGISTRATION_ROLE = "Admin" AUTH_LDAP_FIRSTNAME_FIELD = "givenName" AUTH_LDAP_LASTNAME_FIELD = "sn" AUTH_LDAP_EMAIL_FIELD = "uid" # Search configs AUTH_LDAP_SEARCH = "########" AUTH_LDAP_UID_FIELD = "uid" AUTH_LDAP_BIND_USER = "######" AUTH_LDAP_BIND_PASSWORD = '#########' AUTH_LDAP_SEARCH_FILTER = "##################" # Mapping from LDAP DN to a list of FAB roles AUTH_ROLES_MAPPING = { "cn=Admin,ou=groups,dc=#####,dc=#####,dc=com": ["Admin"], } # The LDAP user attribute which has their role DNs, default is "memberOf" AUTH_LDAP_GROUP_FIELD = "memberOf" AUTH_ROLES_SYNC_AT_LOGIN = True CUSTOM_SECURITY_MANAGER = CustomSecurityManager PERMANENT_SESSION_LIFETIME = 1800 AUTH_API_LOGIN_ALLOW_MULTIPLE_PROVIDERS = True ROW_LIMIT = 5000 SQLALCHEMY_DATABASE_URI = 'sqlite:////app/superset/superset.db?check_same_thread=false' TALISMAN_ENABLED = False WTF_CSRF_ENABLED = False # Set this API key to enable Mapbox visualizations MAPBOX_API_KEY = ''
添加用户界面截图:
原因及解决方案
启用LDAP认证(AUTH_TYPE=AUTH_LDAP)时,Superset依赖的Flask App Builder会默认隐藏密码输入字段——因为用户身份验证由LDAP服务器管理,本地数据库无需存储密码。若需同时支持LDAP用户自动注册和手动创建本地密码用户,可通过以下方式解决:
方法1:启用混合认证模式
将AUTH_TYPE修改为数据库与LDAP认证的组合值,这样Superset会同时支持两种认证方式,添加用户界面将恢复密码输入框:
AUTH_TYPE = AUTH_DB | AUTH_LDAP
保留AUTH_USER_REGISTRATION = True,确保LDAP用户首次登录时仍能自动创建本地用户条目。
方法2:自定义SecurityManager
若需要更精细的控制,可修改自定义CustomSecurityManager,强制显示密码字段:
from superset.security import SupersetSecurityManager from flask_appbuilder.security.views import UserDBModelView class CustomUserDBModelView(UserDBModelView): # 强制开启密码字段显示 show_password_fields = True class CustomSecurityManager(SupersetSecurityManager): userdbmodelview = CustomUserDBModelView
确保配置中CUSTOM_SECURITY_MANAGER = CustomSecurityManager已生效,重启Superset即可。
注意事项
- 混合认证模式下,用户登录时可选择使用LDAP或本地密码(若该用户存在本地密码记录)。
- LDAP自动注册的用户,其本地密码字段会被忽略,登录仍通过LDAP验证;手动创建的用户需设置密码,使用数据库认证登录。
内容的提问来源于stack exchange,提问作者Sulo Wijetunga
相关产品推荐
相关产品推荐

