繁体   English   中英

使用 django-python3-ldap 更改 LDAP 密码加密

[英]Change LDAP password encryption using django-python3-ldap

编辑2:

迁移命令似乎正在导入数据,但密码设置为“不可用”,因为它在库中调用此方法:

# If the user was created, set them an unusable password.
if created:
   user.set_unusable_password() # Will call: self.password = make_password(None)
   user.save()

如果有人有解决方案? 您是否设法将 django-python3-ldap 与其他版本一起使用?


编辑1:

有人设法成功使用 django-python3-ldap 并且可以向我展示他的设置。 可能是我忘记了设置中的配置...

谢谢!


我在 Django 中使用 django-python3-ldap v0.11.2 进行 LDAP 身份验证。

我成功地连接到我用一些虚拟用户创建的 ldap 测试服务器。 使用此命令进行迁移: python manage.py ldap_sync_users工作正常,正在刷新我的数据库。

但是,当我尝试与其中一个用户连接时,我收到此错误消息: LDAP connect failed: LDAPInvalidCredentialsResult - 49 - invalidCredentials - None - INVALID_CREDENTIALS: Bind failed: Invalid authentication - bindResponse - None

我怀疑这是因为存储的密码加密不正确......这是因为以下测试工作正常:

  • 与预先存在的管理员帐户连接
  • 将新导入的用户jdoe的密码修改为abc
  • 登出
  • 使用用户: jdoe和密码abc的连接现在可以正常工作了!

以前有人遇到过这个问题吗? 或者知道如何更改 migrate 命令使用的密码加密? 或者我错过了一个重要的 LDAP 配置......

Python LDAP 设置:

# LDAP Connection Settings
LDAP_AUTH_URL = "ldap://localhost:10389"
LDAP_AUTH_USE_TLS = None
LDAP_AUTH_SEARCH_BASE = "DC=example,DC=com"

LDAP_AUTH_USER_FIELDS = {
    "username": "uid",
    "first_name": "givenName",
    "last_name": "sn",
    "email": "mail",
    "password": "userPassword"
}

LDAP_AUTH_OBJECT_CLASS = "organizationalPerson"

LDAP_AUTH_USER_LOOKUP_FIELDS = ("username",)

LDAP_AUTH_CLEAN_USER_DATA = "django_python3_ldap.utils.clean_user_data"

LDAP_AUTH_SYNC_USER_RELATIONS = "django_python3_ldap.utils.sync_user_relations"

LDAP_AUTH_FORMAT_SEARCH_FILTERS = "django_python3_ldap.utils.format_search_filters"

LDAP_AUTH_FORMAT_USERNAME = "django_python3_ldap.utils.format_username_active_directory"
LDAP_AUTH_CONNECTION_USERNAME = 'uid=admin,ou=system'
LDAP_AUTH_CONNECTION_PASSWORD = 'secret'

LDAP 测试用户配置:

dn: cn=Jane Doe,ou=Users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: Jane Doe
sn: Doe
ou: site_admin
description: 19650324000000Z
employeeNumber: 12
givenName: Jane
mail: jane@example.com
telephoneNumber: 169-637-3314
telephoneNumber: 907-547-9114
uid: jdoe
userPassword:: abc

我的测试数据库的提取:

用户名 | 密码

jdoe...........|.ipxhdylGKTwILF...

好的用户......| pbkdf2_sha256 $150000$PHBKev...

谢谢您的帮助

我最终决定实现自己的身份验证和获取用户方法,即:

  • 检查用户是否已经存在(基本 django 身份验证)
  • 如果不是,请检查具有所提供用户名的用户是否属于特定广告组。 如果他是其中的一部分,请使用基本的 django 创建一个用户:
User.objects.create_superuser(username=username,
                              email=mail,
                              password='mypassword',
                              first_name=first_name,
                              last_name=last_name)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM