У меня есть проприетарное веб-приложение, которое хранит пароль пользователя в форме sha1 $ 79b2c $ b3704ec5703ef28ded379cf6c6de4c4160aa029b. Это соленый хеш sha1.
Я хочу использовать эту предварительно сохраненную информацию и для freeradius. Атрибут Crypt-Password определен в радиусе, но AFAIK это просто хэш пароля md5. Я пробовал это, но это не сработало, как я ожидал. Как я могу использовать одни и те же учетные данные для проверки пользователя в freeradius? Можно ли запустить какой-нибудь скрипт и принять его возвращаемое значение?
Если я изменю собственное веб-приложение, чтобы сохранить сведения о пользователях в другой форме, что я должен выбрать для обеспечения совместимости с 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.