Setting Class attribute by LDAP Groups

Phil Mayers p.mayers at imperial.ac.uk
Thu Jul 4 09:22:17 CEST 2013


On 07/04/2013 04:35 AM, Patrick Gawthorne wrote:

> update request {
>
>                  Class = “%{Ldap-Group}”
>
> }

You can't do that, because Ldap-Group is not a real attribute with a 
value; it's a virtual attribute, which you compare against (think about 
it - you can be in >1 group)

You would have to do something like this:

   if (Ldap-Group = grp1) {
     update reply {
       Class = "grp1"
     }
   }

...which can be slow-ish as it does 1 LDAP query per comparison.

Also not Class is a reply attribute; adding it to request does nothing.

> I did read somewhere if you included the Class variable within the reply
> in the Access-Accept packet that it would be sent back and used within
> the accounting messages as well but this hasn’t been the case for me.

Well, as noted above you're setting class in "request" not "reply".

>
> Even if it’s just some static variable that I set within the
> ‘acct_users’ to get it to send the class attribute; this will achieve my
> goal.
>
> Assuming that the ‘users’ file and the ‘acct_users’ file have the same
> behaviour then why can’t I set Class within the ‘acct_users’ file like I
> can with ‘users’ file?

acct_users runs on accounting packets, which is *after* the 
Access-Accept has been sent. You need to set it in "authorize" or better 
yet, "post-auth", for it to get into the Access-Accept.


More information about the Freeradius-Users mailing list