我在Django中使用django-python3-ldap进行LDAP身份验证。这完全正常,但每当LDAP用户(成功)进行身份验证时,用户详细信息都存储在本地Django数据库(auth_user表)中。
我现在的问题是什么时候一样 (LDAP)用户尝试下次验证,用户将通过LDAP或默认的Django身份验证进行身份验证(因为用户详细信息现在存储在本地Django数据库中)?
如果用户使用本地Django数据库进行身份验证,那么即使用户从LDAP服务器中删除,用户仍然可以访问?这对我来说真的很重要吗?
如果是这种情况,那么每次用户登录时都会从数据库(auth_user表)中删除LDAP用户详细信息,并在每次用户登录时创建?我们非常感谢任何正确方向的帮助。感谢您的宝贵意见。
答案 0 :(得分:0)
来自文档:
当用户尝试进行身份验证时,将建立与LDAP的连接 服务器,应用程序尝试使用提供的绑定 用户名和密码。如果绑定尝试成功,则为用户 详细信息从LDAP服务器加载并保存在本地Django中 用户模型。本地模型只创建一次,详细信息将 每次登录时都要使用LDAP记录详细信息进行更新。
每次都通过绑定进行身份验证,并且每次都会更新LDAP中的信息(正如您配置的那样)。如果从LDAP中删除,Django用户将不会从Django的用户表中删除;如果您使用Django默认身份验证设置多个身份验证后端,则用户应该能够登录(可能在密码重置后),如果从LDAP中删除。如果您查看auth_user
表,您会注意到使用Django auth的用户使用pbkdf2_sha256
进行了密码散列,而LDAP用户密码则没有。