Назад | Перейти на главную страницу

Использование полей пароля пользователя SHA1 на сервере freeradius radius

У меня есть проприетарное веб-приложение, которое хранит пароль пользователя в форме sha1 $ 79b2c $ b3704ec5703ef28ded379cf6c6de4c4160aa029b. Это соленый хеш sha1.

  1. Я хочу использовать эту предварительно сохраненную информацию и для freeradius. Атрибут Crypt-Password определен в радиусе, но AFAIK это просто хэш пароля md5. Я пробовал это, но это не сработало, как я ожидал. Как я могу использовать одни и те же учетные данные для проверки пользователя в freeradius? Можно ли запустить какой-нибудь скрипт и принять его возвращаемое значение?

  2. Если я изменю собственное веб-приложение, чтобы сохранить сведения о пользователях в другой форме, что я должен выбрать для обеспечения совместимости с Freeradius? За исключением открытого текста и MD5.

Я нашел, как это сделать для части b вопроса:

Форма sha1 $ 79b2c $ b3704ec5703ef28ded379cf6c6de4c4160aa029b имеет части как: sha1 $ SALT $ SALTEDPASSWORD

В Radius это называется SSHA-Password Ref: http://www.packtpub.com/article/freeradius-authentication-storing-passwords Ссылка: http://freeradius.org/radiusd/man/rlm_pap.txt

1- Используйте сценарий в Ref1, чтобы создать хэш SHA1 с добавлением соли. prop-to-ssha.pl UserClearPass СОЛЬ

Результат этого может быть назначен атрибуту

SSHA-пароль: = OUTPUTOFPERLSCRIPT

И это работает. Я могу автоматизировать собственное приложение, а также создать ввод пароля для радиуса при создании пользователей.

На часть вопроса у меня пока нет ответов.

Это работает в Java

// Salted SHA1 with a random salt appended
String salt = UUID.randomUUID().toString().replaceAll("-", "");
hashPass = Base64.encodeBase64String(ArrayUtils.addAll(
                                DigestUtils.sha1(currPass.concat(salt)),
                                                salt.getBytes()));

Теперь вы можете добавить hashPass в таблицу RadCheck с атрибутом SSHA-Password. Base64 и DigestUtils взяты из Apache Commons.