You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:13:17