我在同一台计算机上安装了带有Freeradius服务器的Asterisk服务器,并尝试使用Radius进行身份验证,如果用户可以拨打电话,但我在调用时遇到错误:
ERROR: No authenticate method (Auth-Type) found for the request: Rejecting the user
Failed to authenticate the user.
我必须添加一个Radius文件中缺少的东西吗?
答案 0 :(得分:1)
问题是虚拟服务器的授权部分中没有模块负责处理请求。
您应该删除授权部分的内容,并列出以下模块:
authorize {
pap
chap
mschap
digest
eap
}
然后,您应该以调试模式radiusd -X
运行服务器,以查看哪个模块对请求负责(您将看到其中一个返回ok
或updated
其他模块返回noop
)。我们称之为auth module
一旦您确定哪个模块将对该请求负责,您就需要提供适当的哈希密码。
以下是可与不同模块配合使用的密码哈希值。
Cleartext-Password
,CHAP-Password
Cleartext-Password
,NT-Password
Cleartext-Password
,Digest-HA1
对于测试,您可以将密码放在服务器本地的平面文件中。处理这些平面文件的模块是files
模块。
要向用户文件添加条目,请先截断/etc/raddb/users
(对您的安装进行更改)。
然后将以下条目添加到顶部:
<username> <password attr> := <password>
将<>
中的值替换为实际值。
删除授权中未使用的模块,并在顶部添加files
模块。
authorize {
files
<auth module>
}
然后从身份验证中删除所有模块并添加<auth module>
authenticate {
<auth module>
}
这应该会让你起步并运行。如果没有模块对请求负责,请从调试输出顶部发布请求中的属性列表,我将帮助您识别它。
答案 1 :(得分:0)
您需要配置半径以添加缺少的标题
您可以在radius服务器上启用完全调试,它将显示服务器获取的所有数据包。
Freeradius允许在任何舞台上将任何标题添加到数据包中,请参阅doc。