freeradius - 在半径回复中返回自定义用户属性
问题描述
我正在使用(并享受)Freeradius v3,我一直在努力反对一些我确信社区已经想通的东西。
我在字典中定义了一个自定义用户属性并包含在我的授权文件中:
me Mygroup :="usergroup", Cleartext-Password := "password1234"
...并且我可以通过将以下内容添加到默认站点(/etc/freeradius/3.0/sites-available/default)来更新来自radius服务器的回复
update reply {
Reply-Message := "additional info"
}
从命令行运行一个简单的 radtest:
radtest me password1234 192.168.x.x 0 $secret
...给了我以下信息:
Sent Access-Request Id 204 from 0.0.0.0:38090 to 192.168.2.161:1812 length 77
User-Name = "me"
User-Password = "password1234"
NAS-IP-Address = 192.168.x.x
NAS-Port = 0
Message-Authenticator = 0x00
Cleartext-Password = "password1234"
Received Access-Accept Id 204 from 192.168.x.x:1812 to 0.0.0.0:0 length 53
Reply-Message = "additional info"
我应该包括哪些变量、命令行开关或其他变量来获取“附加信息”部分中的“我的组”信息?
我不是想把海洋煮沸,我知道 freeradius 有一些非常复杂的组/狩猎组/权限配置,但我需要的只是回复消息中的数据。
谢谢!
解决方案
如果你看一下这个关于用户文件如何工作的问题,你会看到那个操作符的属性,在用户文件条目的第一行,被插入到控制列表中。
如果您想在其他地方访问该属性,则需要添加列表限定符 ie control:Mygroup
。
由于您想将值插入字符串,您需要使用字符串插值语法(在 FreeRADIUS 文档中称为 xlat 或字符串扩展)。对于简单的属性扩展,您只需将属性名称及其限定符包装在%{
and中}
。
所以你最终的 unlang 更新块看起来像:
update reply {
Reply-Message := "%{control:Mygroup}"
}
推荐阅读
- python - Python classes/functions & self paramter
- php - 如何在 PHP 中删除空格、%20、双破折号和其他字符
- mysql - 如何在mysql中将文本数据类型转换为日期时间?
- javascript - 保护硒免受检测
- python - 相当于 dask-ml 中 scikit-learn 的 GroupShuffleSplit?
- javascript - 反应倒计时计时器仅在 EST 上运行
- php - 如何在 localhost 中启用 gzip xampp?
- c# - Cassandra.ServerErrorException:'java.lang.NoClassDefFoundError:org/joda/time/ReadablePartial'
- angular - 在 angular5 中使用 *ngFor 获取特定值
- ftps - Duplicity 不适用于 lftp+ftps 后端