2017-08-10 64 views
0

我使用了freeradius服務器,它使用MySQL來存儲數據。FreeRadius使用兩個Auth-Type PAP和EAP

以下是我的數據庫

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 | 
+----------+-----------+----------+ 

我們的系統使用兩種不同的身份驗證類型有免費半徑兩個不同的客戶端,一個使用PAPUser-Password屬性發送密碼。

和其他客戶端用戶EAP,並將在EAP-Message密碼和Message-Authenticator

我要的是,當PAP身份驗證失敗或當User-Password屬性不存在,它應該使用EAP作爲Auth-Type如果EAPMessage-Authenticator是不存在於radius屬性中,它應該用Access-reject或Authentication失敗消息來回復。

任何幫助將不勝感激

回答

0

你不應該手動設置control:Auth-Type。此屬性存在,因此authorize部分中的模塊可與服務器的其餘部分進行通信,即應在authenticate部分中運行的身份驗證類型。

爲了設置基於屬性Auth-Type你應該列出PAP,EAP等..又在授權部分模塊,他們會檢查,如果必要的屬性是在請求和確定正確的驗證型值。

如果您想制定一個策略來限制某些用戶進行某些類型的驗證,請在回覆列表(radgroupreply表)中設置Auth-Type,並檢查在授權部分末尾設置了哪個Auth-Type 。

authorize { 
    eap 
    pap 
    sql 

    if (control:Auth-Type != reply:Auth-Type) { 
     reject 
    } 
}