我使用MySQL来存储数据的freeradius服务器。
以下是我的数据库
radcheck table
+-----+----------+--------------------+----+--------------+
| id | username | attribute | op | value |
+-----+----------+--------------------+----+--------------+
| 474 | varun | Cleartext-Password | := | sunshine3003 |
+-----+----------+--------------------+----+--------------+
radreply table
+----+----------+--------------+----+-------+
| id | username | attribute | op | value |
+----+----------+--------------+----+-------+
| 1 | varun | Fall-Through | = | Yes |
+----+----------+--------------+----+-------+
radgroupcheck table
+----+-----------+-----------+----+-------+
| id | groupname | attribute | op | value |
+----+-----------+-----------+----+-------+
| 1 | group1 | Auth-Type | := | PAP |
| 2 | eapgroup | Auth-Type | := | EAP |
+----+-----------+-----------+----+-------+
radusergroup table
+----------+-----------+----------+
| username | groupname | priority |
+----------+-----------+----------+
| varun | eapgroup | 1 |
| varun | group1 | 2 |
+----------+-----------+----------+
我们有两个不同的客户端,它们使用两种不同的自由半径的身份验证类型,一个使用PAP
并在User-Password
属性中发送密码。
和另一位客户用户EAP
并在EAP-Message
和Message-Authenticator
我想要的是,当PAP无法进行身份验证或User-Password
属性不存在时,应使用EAP
作为Auth-Type
以及EAP
和{{1}在radius属性中不存在它应该使用Access-reject或Authentication failure消息进行回复。
任何帮助将不胜感激
答案 0 :(得分:0)
您不应手动设置control:Auth-Type
。此属性存在,以便authorize
部分中的模块可以与服务器的其余部分通信,以便在authenticate
部分中运行该身份验证的类型。
为了根据属性设置Auth-Type
,您应该在授权部分依次列出pap,eap等...模块,他们将检查必需属性是否在请求中并确定正确的Auth-Type值。
如果要制定策略以限制某些用户使用某些类型的身份验证,请在回复列表(radgroupreply表)中设置Auth-Type,并检查在授权部分末尾设置的Auth-Type。
authorize {
eap
pap
sql
if (control:Auth-Type != reply:Auth-Type) {
reject
}
}