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

如何阻止LDAP用户在Django管理后台自动创建

解决Django LDAP认证自动创建用户的问题

快速解决方案:禁用自动创建默认行为

django-auth-ldap默认会在LDAP认证通过后自动在Django用户表中生成对应账号,这是因为AUTH_LDAP_CREATE_USER参数默认值为True。你只需要在settings.py中添加一行配置就能关闭这个功能:

AUTH_LDAP_CREATE_USER = False

添加后,只有已经存在于Django用户列表中的账号,才能通过LDAP认证登录;AD中存在但Django里没有的用户会直接认证失败,不会被自动创建。

进阶控制:仅允许特定AD组用户创建账号(可选)

如果需要更灵活的权限控制——比如只允许AD中特定组的用户自动创建Django账号,其他组用户无法登录,可以自定义LDAP后端:

  1. 在你的Django应用下创建backends.py文件,写入以下代码:
from django_auth_ldap.backend import LDAPBackend

class RestrictedLDAPBackend(LDAPBackend):
    def get_or_create_user(self, username, ldap_user):
        # 定义允许创建账号的AD组DN
        allowed_group_dns = [
            "cn=允许登录组,ou=group,dc=example,dc=com",
            "cn=管理员组,ou=group,dc=example,dc=com"
        ]
        # 检查当前LDAP用户是否属于允许的组
        if any(group in ldap_user.group_dns for group in allowed_group_dns):
            return super().get_or_create_user(username, ldap_user)
        # 不属于允许组则返回None,认证失败
        return None, False
  1. 修改settings.py中的认证后端配置,替换为自定义的后端:
AUTHENTICATION_BACKENDS = [
    'your_app_name.backends.RestrictedLDAPBackend',  # 替换为你的应用路径
    'django.contrib.auth.backends.ModelBackend'
]

注意事项

  • 关闭自动创建后,需要手动在Django后台添加需要登录的用户,确保用户名和AD中的sAMAccountName完全一致。
  • 你的配置中AUTH_LDAP_ALWAYS_UPDATE_USER = True会同步LDAP用户属性到Django账号,这个配置仅对已存在的Django用户生效,关闭自动创建后不会影响该功能。

内容的提问来源于stack exchange,提问作者Ricky Aguilar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 13:10:06