freeradius unlang禁用转义

问题描述 投票:0回答:1

我有以下要针对ldap检查的VLAN的列表。

Tmp-String-0 = "CN=vlan10,CN=Users,DC=aaa,DC=local;CN=vlan20,CN=Users,DC=aaa,DC=local"

用ulang,我将它们炸开并循环穿过它们

 if ("%{explode:&control:Tmp-String-0 ;}" > 0) {
           foreach &control:Tmp-String-0 {

然后我尝试进行检查

Tmp-String-1 := "%{ldap_aaa.local:ldapi://192.168.0.199:389/cn=Users,dc=aaa,dc=local?memberof?sub?(&(objectCategory=User)(sAMAccountName=%{%{Stripped-User-Name}:-%{User-Name}})(memberOf=%{Foreach-Variable-0}))}"

但是%{Foreach-Variable-0}获取字符串的转义版本:

CN3dvlan202cCN3dUsers2cDC3daaa2cDC3dlocal

转义的版本无法正常工作,如果我将其替换为硬编码的未转义的版本,它将正常工作。

CN=vlan20,CN=Users,DC=aaa,DC=local

如何防止使用unlang来转义变量?

ldap-query freeradius
1个回答
0
投票

您无法阻止在v3中进行转义。在版本4中,存在“污染的”和“未污染的”值的概念,已污染的值被转义,并且“未污染的”值被逐字插入,但是我不确定LDAP模块扩展中是否已实现。

您可以使用LDAP模块中的组成员资格检查来执行xlat扩展所要实现的任务?

例如

 if ("%{explode:&control:Tmp-String-0 ;}" > 0) {
           foreach &control:Tmp-String-0 {
                      if (LDAP-Group == "%{control:Tmp-String-0}") {
                                 update reply {
                                            # VLAN-Attrs
                                 }
                      }
           }
}
© www.soinside.com 2019 - 2024. All rights reserved.