我使用freeradius通过一个外部脚本对用户进行身份验证,如here所示,该脚本在传递用户名和密码对时返回accept或reject。

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}字段包含该会话中使用的质询。
虽然您无法直接实时地从中获取纯文本密码,但如果您有纯文本密码,则可以使用md5将其与chap challenge散列,如here所示。这应该等于您的CHAP密码值。

10-06 02:35