Authorizing using LDAP attributes
Clayton Knorr
clayton.knorr at nuspire.com
Fri May 6 19:25:02 CEST 2016
Running radius 2.1.12 and Openldap (openldap just for testing at this point)
Ok, my situation in a nutshell.
Trying to solve a problem. Need to provide EAP authentication for wifi to many devices. The freeradius server will be hitting an LDAP directory which is not in my control. I need to be able to have conditional logic to allow only certain users with certain attributes in the LDAP directory connect to certain RADIUS clients. I don't control the LDAP directory so using groups or OUs is not an option. So for example if the ldap user has an attribute Location that equals "A1234" I only want them to connect to one or a subset of Aps/controllers.
I have gotten to the point where everything works for EAP, just the LDAP attributes mapping to RADIUS attributes is giving me fits.
So I have a test ldap directory in which I have set users up with the attribute businessCategory set to A1000.
I have added an entry to the main dictionary file: ATTRIBUTE My-Local-String 3000 string
I have added a line to ldap.attrmap: checkItem My-Local-String businessCategory
I have the following in my post-auth section in sites-enabled/default:
if ( Called-Station-Id == "AC-85-75-46-55-91:Peep" && My-Local-String == "A1000" ) {
noop
}
else {
reject
}
Here are some logs from what happens when I try to log in:
...
[ldap] looking for check items in directory...
[ldap] businessCategory -> My-Local-String == "A1000"
[ldap] userPassword -> Cleartext-Password == "password"
[ldap] userPassword -> Password-With-Header == "password"
[ldap] looking for reply items in directory...
[ldap] user uuserton authorized to use remote access
[ldap] ldap_release_conn: Release Id: 0
++[ldap] return
.....
# Executing section post-auth from file /etc/freeradius/sites-enabled/default
+- entering group post-auth {...}
++? if (Called-Station-Id == "AC-85-75-46-55-91:Peep" && My-Local-String == "A1000" )
? Evaluating (Called-Station-Id == "AC-86-74-46-65-91:Peep" ) -> TRUE
(Attribute My-Local-String was not found)
? Evaluating (My-Local-String == "A1000" ) -> FALSE
++? if (Called-Station-Id == "AC-86-74-46-65-91:Peep" && My-Local-String == "A1000" ) -> FALSE
++- entering else else {...}
+++[reject] returns reject
++- else else returns reject
Using Post-Auth-Type Reject
The baffling part is where it says "Attribute My-Local-String was not found." Am I completely barking up the wrong tree here? Is ldap.attrmap meant to be used for something completely different?
Thanks....
More information about the Freeradius-Users
mailing list