我将 FreeRADIUS 配置为使用 EAP-TLS 进行基于证书的身份验证(自签名证书)。身份验证工作正常,只是我想添加基于组的授权。
更具体地说,我需要Class
在回复中使用要发送回 NAS 的属性。然后 NAS 将读取并解释此属性作为组成员信息(例如Class
= myclass
)。
一些背景信息:我将 FreeRADIUS 与 strongSwan 一起使用;这就是解释组成员信息的地方。
我正在寻找一种让 FreeRADIUS 了解组的简单方法。我尝试Class
在 rlm_files 模块的配置文件中设置属性(freeradius/3.0/mods_config/files/authorize
),如下所示:
username
Reply-Message := "Hello, %{User-Name}",
Class := "myclass"
我离开了第一行为空,因为不需要“检查项目”。
EAP-TLS 身份验证成功,但是该Class
属性未附加到答复中。
我甚至不确定在 EAP-TLS 身份验证完成后FreeRADIUS 是否会处理user
(或) 文件。但我对此表示怀疑。authorize
有没有一种简单的方法可以Class
根据用户名指定属性(假设有多个用户和几个组)?
答案1
FreeRADIUS 可能无法处理用户文件,因为它会使大多数 EAP 数据包的授权部分短路。
您需要使用 调用 post-auth 部分中的用户文件files.authorize
,即
Post-auth {
files.authorize
}
User-Name
可以设置为任何值,授权仍然会成功,因此在制定 EAP-TLS 策略决策时不宜使用它。
IIRC 证书属性被解码并放置在&session-state:
列表中。
在这种情况下你可以
Post-auth {
update request {
&request: += &session-state:[*]
}
files.authorize
}
这应该使所有属性在用户文件中都可用于匹配。它还应该在处理身份验证尝试结束时在调试输出中打印出哪些属性可用。