【问题标题】:Is it possible to change the Hashing algorithm in django_auth?是否可以更改 django_auth 中的哈希算法?
【发布时间】:2012-01-09 20:09:38
【问题描述】:

我有一个正在运行的用户 wiki。现在我想在 Django 中编写一个应用程序来执行特定任务。

我必须使用我的“旧”用户/组数据库(密码散列算法与 django_auth 不同)并时不时同步它,因为我的用户已经有一个登录名,必须在任何地方都相同。

我也想使用 django_auth。

是否可以更改 django_auth 中的 Hashing 算法?

让django auth使用我写的一个函数来检查插入的密码是对还是错。

在此先感谢您,Senad。 =)

【问题讨论】:

    标签: django django-authentication


    【解决方案1】:

    引用How Django stores passwords docs:

    Django 通过查询 PASSWORD_HASHERS 设置来选择要使用的算法。这是这个 Django 安装支持的散列算法类的列表。此列表中的第一个条目(即 settings.PASSWORD_HASHERS[0])将用于存储密码,所有其他条目都是可用于检查现有密码的有效哈希。这意味着如果您想使用不同的算法,您需要修改 PASSWORD_HASHERS 以在列表中首先列出您的首选算法。

    您可以编写自定义的,只需从https://github.com/django/django/blob/master/django/contrib/auth/hashers.py 复制粘贴哈希,进行自定义并添加到设置:

    PASSWORD_HASHERS = [
        'myApp.myUtils.CesarPasswordHasher',
        'django.contrib.auth.hashers.PBKDF2PasswordHasher',
        'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
        'django.contrib.auth.hashers.Argon2PasswordHasher',
        'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
    ]
    

    【讨论】:

    • 我会投票支持你的评论,但我还不允许 =) 祝你有美好的一天
    • 链接已损坏。
    • 嗨@shaikmoed,谢谢,是12年的回答!已更新。
    • 感谢更新。如果我使用 django_auth_ldap 库,这些哈希器是否适用于 LDAP 登录?你能在空闲时间看看this吗?
    【解决方案2】:

    您可以编写一个包含自己的authenticate 函数的custom authentication backend,以根据您的自定义哈希检查密码。当然,您需要一些方法来区分不同类型的用户。

    【讨论】:

    • “不同类型的用户”是什么意思?
    • 我理解你的意思是你有一些用户想要使用现有的 django-auth 哈希。
    • 不,我想使用现有的 wiki 数据库用户和组。在需要时同步(例如登录失败)。无论如何谢谢:)
    • 酷,忽略我的回答 - 自定义身份验证后端仍然是要走的路。
    【解决方案3】:

    是的,这是可能的。有关示例,请参阅django-bcyrpt。在 Django 1.4 中更改会更容易:https://docs.djangoproject.com/en/dev/releases/1.4/#improved-password-hashing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 2021-06-25
      • 2010-12-01
      相关资源
      最近更新 更多