FreeRADIUS - 会话过期时从数据库中删除用户

时间:2017-07-19 05:36:09

标签: php mysql database radius freeradius

我正在使用FreeRADIUS和MySQL来验证用户身份。

用户保存在 radcheck 表中。用户属性保存在 radreply 表中。

例如,我在 radcheck 表中有一个名为Bob的用户。

username | attribute           | op | value
------------------------------------------------
Bob      | Cleartext-Password  | := | password12

Bob在 radreply 表中的会话超时值为60(1分钟)。

username | attribute       | op | value
------------------------------------------------
Bob      | Session-Timeout | := | 60
Bob      | Idle-Timeout    | := | 60

一切正常。我的问题是RADIUS只是立即重新验证Bob。我认为这是因为Bob仍然存在于 radcheck 表中。

在达到会话超时时间之后,有没有办法从 radcheck radreply 表中移除Bob?

2 个答案:

答案 0 :(得分:1)

您可以使用Freeradius中的Perl / PHP模块在 postacctsql 中使用Perl / PHP脚本编写自定义登录。 postacctsql 将为您提供会话超时的用户,然后您可以编写自定义脚本以从Mysql DB中删除记录。你可以在谷歌上找到很多这样的脚本的例子。

答案 1 :(得分:0)

这是半径的正确行为。如果bob认证正确,则会话将在60秒后超时。如果<=会话超时,则不需要空闲超时。您必须对设置的最大数量进行计数,然后将访问权限从接受更改为拒绝。下次会话超时时间到达bob无法重新认证