Я использую Freeradius для аутентификации пользователей с помощью внешнего скрипта, как показано Вот, который возвращает Принять или Отклонить, когда передал пару имени пользователя и пароля.
authorize{
update control {
Auth-Type := `/usr/bin/php -f /etc/raddb/yourscript.php '%{User-Name}' '%{User-Password}' '%{Client-IP-Address}'`
}
Это работает правильно, как и ожидалось, когда клиент использует PAP. Пароль отправляется в %{User-Password}
,
Однако при использовании CHAP или MS-CHAP это не работает, так как %{User-Password}
остается пустым.
Как я могу получить незашифрованный пароль для отправки в мой сценарий? В качестве альтернативы, есть ли другой способ поддержки CHAP / MS-CHAP?
%{CHAP-Password}
поле содержит хэш пароля и вызов, который является магическим числом.
%{CHAP-Challenge}
поле содержит вызов, используемый в этом сеансе.
Хотя вы не можете получить простой текстовый пароль от этого простым способом в реальном времени, если у вас есть открытый текстовый пароль, вы можете хешировать его с помощью CHAP-Challenge, как показано Вот используя md5. Это должно быть равно вашему значению CHAP-пароля.
Других решений пока нет …