在FreeRadius中使用两个Auth-Type PAP和EAP

时间:2017-08-10 07:16:45

标签: mysql authentication radius freeradius radius-protocol

我使用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-MessageMessage-Authenticator

中发送密码

我想要的是,当PAP无法进行身份验证或User-Password属性不存在时,应使用EAP作为Auth-Type以及EAP和{{1}在radius属性中不存在它应该使用Access-reject或Authentication failure消息进行回复。

任何帮助将不胜感激

1 个答案:

答案 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
    }
}