Как я могу использовать хэш Whirlpool с аутентификацией Django? - PullRequest
2 голосов
/ 23 февраля 2010

У нас есть система, написанная на PHP, в которой пароли учетных записей хранятся в виде первых 128 символов хеш-пароля пароля.

Я бы хотел перейти к обработке входов в Django без изменения базы данных или просьбы пользователей изменить свои пароли. Кроме того, я бы предпочел придерживаться Whirlpool вместо менее безопасных хешей, встроенных в Django. Я нашел реализацию Whirlpool на Python (C), которая, кажется, работает нормально.

Как я могу изменить функцию проверки пароля Django для использования Whirlpool вместо SHA1 / MD5?

1 Ответ

2 голосов
/ 23 февраля 2010

В основном вы хотите написать свой собственный бэкэнд аутентификации. К счастью, это можно сделать очень легко.

Это так же просто, как:

class MyBackend:
    def authenticate(self, username=None, password=None):
        # Check the username/password and return a User.

Тогда все, что вам нужно сделать, это указать внутренний класс, задав для AUTHENTICATION_BACKENDS значение ('django.contrib.auth.backends.YourCustomBackend',).

См .: http://docs.djangoproject.com/en/dev/topics/auth/#specifying-authentication-backends

...