我使用FreeRADIUS和MySQL来验证用户身份。
用户保存在radcheck表中。用户属性保存在radreply表中。
例如,我在radcheck表中有一个名为Bob的用户。
username | attribute | op | value
------------------------------------------------
Bob | Cleartext-Password | := | password12
Bob在radreply表中的Session-Timeout值为60(1分钟)。
username | attribute | op | value
------------------------------------------------
Bob | Session-Timeout | := | 60
Bob | Idle-Timeout | := | 60
一切正常。我的问题是RADIUS只是立即重新验证Bob。我认为这是因为Bob仍然存在于radcheck表中。
在达到Session-Timeout时间后,有没有办法从radcheck和radreply表中删除Bob?
您可以使用Freeradius中的Perl / PHP模块在postacctsql中使用Perl / PHP脚本编写自定义登录。 postacctsql将为您提供会话超时的用户,然后您可以编写自定义脚本以从Mysql DB中删除记录。你可以在谷歌上找到很多这样的脚本的例子。
这是半径的正确行为。如果bob是auth well,则会话在60秒内超时。如果<= session-timeout,则空闲超时不是必需的。您必须将某些内容计算到已设置的最大值,然后将访问权限从“接受”更改为“拒绝”。下次会话超时达到bob不能reauth