redundant LDAP-Group
Phil Mayers
p.mayers at imperial.ac.uk
Thu Dec 2 15:49:17 CET 2010
On 02/12/10 13:14, Alexander Clouter wrote:
> Phil Mayers<p.mayers at imperial.ac.uk> wrote:
>>
>>> It would be really nice to fold those duplicate LDAP-Group lines into
>>> 'ldap_login-LDAP-Group', however alas FreeRADIUS does not love me:
>>> ----
>>> /etc/freeradius/LOCAL/users-login[1]: Parse error (check) for entry DEFAULT: Invalid octet string "it-switch-admin" for attribute name "ldap_login-LDAP-Group"
>>> Errors reading /etc/freeradius/LOCAL/users-login
>>
>> AFAICT this doesn't really work because of the way the attributes
>> comparisons are actually handled.
>>
> Was wondering if someone out there knew of a neater way to do this?
Ah I see.
I was thinking you might be able to do something with the ldap xlat:
update control {
My-Group-Staff = "%{ldap1:...}"
}
if (!control:My-Group-Staff) {
update control {
My-Group-Staff = "%{ldap2:...}"
}
}
or:
update control {
My-Group-Staff = "%{%{ldap1:..}:-%{ldap2:...}}"
}
...but sadly again, the ldap xlat doesn't return an error code, just 0
so it's impossible to distinguish between no match and error, and you'll
end up hitting the "ldap2" module a lot when you don't need to.
Hmm. Tricky.
How about a pair of ldap modules and creative use of the ldap.attrmap,
so something like:
checkItem My-Group memberOf +=
...then:
policy {
myldap {
ldap1
if (fail) {
ldap2
}
}
}
...then:
authorize {
myldap
if (control:My-Group == Staff) {
# something
}
}
Alternatively, how about:
policy {
myldap {
update request {
Module-Failure-Message !* 0x00
My-Group = "%{ldap1:...}"
}
if (Module-Failure-Message) {
update request {
My-Group = "%{ldap2:...}"
}
}
}
}
More information about the Freeradius-Users
mailing list