首页 > 解决方案 > 在半径回复中返回自定义用户属性

问题描述

我正在使用(并享受)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 有一些非常复杂的组/狩猎组/权限配置,但我需要的只是回复消息中的数据。

谢谢!

标签: freeradius

解决方案


如果你看一下这个关于用户文件如何工作的问题,你会看到那个操作符的属性,在用户文件条目的第一行,被插入到控制列表中。

如果您想在其他地方访问该属性,则需要添加列表限定符 ie control:Mygroup

由于您想将值插入字符串,您需要使用字符串插值语法(在 FreeRADIUS 文档中称为 xlat 或字符串扩展)。对于简单的属性扩展,您只需将属性名称及其限定符包装在%{and中}

所以你最终的 unlang 更新块看起来像:

update reply {
    Reply-Message := "%{control:Mygroup}"
}

推荐阅读