NetBox配置AD认证失败求助:无法映射用户名到DN
NetBox配置AD认证失败:无法将用户名映射到DN
我在NetBox中尝试配置AD认证,采用官方提供的LDAP-AD认证示例配置,具体代码如下:
import ldap from django_auth_ldap.config import LDAPSearch, NestedGroupOfNamesType # 服务器URI AUTH_LDAP_SERVER_URI = "ldaps://ip_address:port" # 绑定Active Directory时可能需要以下配置 AUTH_LDAP_CONNECTION_OPTIONS = { ldap.OPT_REFERRALS: 0 } # 设置NetBox服务账号的DN和密码 AUTH_LDAP_BIND_DN = "CN=NetBoxAdmin,OU=System,OU=Admin,DC=domain,DC=de" AUTH_LDAP_BIND_PASSWORD = "a secret" # 如果需要忽略证书错误可启用此配置(比如接受自签名证书) # 注意这是NetBox专属配置,对应设置: # ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) LDAP_IGNORE_CERT_ERRORS = True # 如果需要通过服务器上的CA证书目录验证LDAP服务器证书,启用此配置 # 注意这是NetBox专属配置,对应设置: # ldap.set_option(ldap.OPT_X_TLS_CACERTDIR, LDAP_CA_CERT_DIR) # LDAP_CA_CERT_DIR = '/etc/ssl/certs' # 如果需要通过自定义CA验证LDAP服务器证书,启用此配置 # 注意这是NetBox专属配置,对应设置: # ldap.set_option(ldap.OPT_X_TLS_CACERTFILE, LDAP_CA_CERT_FILE) # LDAP_CA_CERT_FILE = '/path/to/example-CA.crt' # 此搜索用于匹配sAMAccountName与输入用户名一致的用户,当用户用户名不在DN中时(如Active Directory)必须配置 AUTH_LDAP_USER_SEARCH = LDAPSearch( "OU=Admin,DC=domäne,DC=de", ldap.SCOPE_SUBTREE, "(|(userPrincipalName=%(user)s)(sAMAccountName=%(user)s))" ) # 如果可通过用户名生成用户DN,则无需搜索 AUTH_LDAP_USER_DN_TEMPLATE = None # 将LDAP用户属性映射到Django属性 AUTH_LDAP_USER_ATTR_MAP = { "username": "sAMAccountName", "email": "mail", "first_name": "givenName", "last_name": "sn", } AUTH_LDAP_USER_QUERY_FIELD = "username" # 此搜索应返回用户所属的所有组,django_auth_ldap用它来确定组层级 AUTH_LDAP_GROUP_SEARCH = LDAPSearch( "OU=Human,OU=Admin,DC=domain,DC=de", ldap.SCOPE_SUBTREE, "(objectClass=group)" ) AUTH_LDAP_GROUP_TYPE = NestedGroupOfNamesType() # 定义登录所需的组 AUTH_LDAP_REQUIRE_GROUP = "CN=NetBox,OU=Human,OU=Admin,DC=domain,DC=de" # 同步LDAP组分配 AUTH_LDAP_MIRROR_GROUPS = True # 通过组定义特殊用户类型,分配超级用户权限时需格外谨慎 AUTH_LDAP_USER_FLAGS_BY_GROUP = { "is_active": "cn=active,ou=groups,dc=example,dc=com", "is_staff": "cn=staff,ou=groups,dc=example,dc=com", "is_superuser": "CN=NetBox,OU=Human,OU=Admin,DC=domain,DC=de" } # 如需更细粒度的权限,可将LDAP组映射到Django组 AUTH_LDAP_FIND_GROUP_PERMS = True # 缓存组信息1小时以减少LDAP流量 AUTH_LDAP_CACHE_TIMEOUT = 3600 AUTH_LDAP_ALWAYS_UPDATE_USER = True
使用账号登录时出现错误:
开启django_auth_ldap错误日志后,仅得到以下信息:
Authentication failed for usertest: failed to map the username to a DN.
我已使用相同的URI和绑定账号通过ldapsearch工具完成LDAPS请求,验证LDAP配置无误。NetBox服务器及Nginx服务器均未使用自签名证书。
当前使用的版本信息:
- NetBox v3.6.5
- Python v3.10.12
- Linux Ubuntu 22.04.4 LTS (Jammy)
请问如何解决这个问题?
内容的提问来源于stack exchange,提问作者Alphabeit
相关产品推荐
相关产品推荐

