我成功部署了 freeradius 服务器,并创建了一个 python 脚本,用于对用户(传入请求)进行额外检查。我查了一下互联网(freeradius 的资源非常糟糕),只找到一个线程,其中解释了有关向该过程添加 python 脚本的一些基础知识。
现在我将其放在 /etc/freeradius/sites-enabled/default 中的以下部分中authorize
:
update control {
Auth-Type := `/usr/bin/python /etc/test.py '%{User-Name}' '%{User-Password}'`
}
我的test.py
文件吐出Reject
或Accept
。我还使用sql
freeradius 设置了身份验证,问题是,如果我的脚本返回任何其他授权请求,则会被忽略;即使检查拒绝用户,Accept
响应仍将是。Accept
sql
据我所知,我应该传递一个noop
而不是Accept
允许 freeradius 继续,并且只有Reject
当我需要拒绝用户时才传递,但如果我响应noop
服务器投诉。
有什么想法吗?也许我需要将我的代码添加到该Authentication.
部分?怎么做?
答案1
...如果我的脚本返回“接受”,则忽略任何其他授权请求
是的。这是设计使然。您告诉 FreeRADIUS 接受该用户。它不会理会您授权部分中的任何其他内容。我认为您说得对,如果您希望将其他授权方法与脚本结合使用,您希望脚本返回noop
而不是。Accept
您应该查看取消如果你还没有,可以查看 manpage 以及 rlm_python manpage。也可以阅读全部配置文件中的注释。
您尚未在概念层面上指定您想让 FreeRADIUS 做什么,因此我不太清楚如何进一步为您提供建议。但是,我使用 FreeRADIUS-Users 邮件列表取得了很好的效果。开发人员和许多对 FreeRADIUS 及其功能有深入了解的人经常访问该邮件列表。我会在发布之前阅读他们的常见问题解答(不阅读的用户通常会被禁止),描述您想在广泛的概念层面和实施层面做什么(就像您在这里所做的那样),并确保提交完整的调试输出。
我建议你去邮件列表的原因是,我怀疑有更好的方法来实现你的目标,但我对 rlm_python 不够熟悉,无法提出前进的方向。无论如何,使用 unlang 规则调用 python 脚本似乎不太合适……