我希望 freeradius 检查组成员身份并根据组成员身份允许访问:
我当前的配置:
ldap {
identity = 'cn=radius,ou=bindings,dc=company,dc=com'
password = 'secret'
server = 'ldap://openldap'
base_dn = 'dc=company,dc=com'
user {
base_dn = "ou=users,${..base_dn}"
filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
}
group {
base_dn = "ou=network-admins,ou=groups,${..base_dn}"
filter = "(objectClass=groupOfNames)"
name_attribute = "cn"
membership_filter = "(member=%{control:Ldap-UserDn})"
cacheable_name = yes
}
update {
control:NT-Password := sambaNTPassword
}
}
我希望只有network-admins
OU 成员才能得到Access-Accept
答复。其他人将被拒绝。
network-admins
OU 包含两个组 (groupOfNames),这是存储成员的地方。根据实际组,我还想设置一些应发送到 radius 客户端的属性。
这怎么可能?
答案1
因此我尝试将这些属性放在此处的ldap
mod 文件中,但是它不起作用。
如果我修改了default
服务器配置,post-auth
部分属性在响应中可见:
...
update reply {
Mikrotik-Group := "%{control:LDAP-Group}"
}
答案2
使用常规if{}
作为“授权”块的一部分(文档中说“后授权”,但似乎太晚了)。模块会自动将比较转换==
为“任何值相等”检查,因此您不需要“foreach”。
if (!(LDAP-Group == "network-admins")) {
reject
}
这rlm_ldap 文档在“小组支持”部分有更详细的示例。