我使用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密码值。