Multi-valued LDAP attribute

Adam Track adamtrack at rocketmail.com
Wed May 2 19:55:57 CEST 2012


>> In a continuation to my previous issue about how to reference an LDAP

>> attribute in post-auth, I am now wondering how to iterate through a
>> multi-valued attribute in a perl script I call from post-auth.  In the
>> debug you can see all three values are returned:
>
>  Multi-value attributes are an array in Perl.
>
>> I'm no perl expert, but shouldn't I be able to reference all three
>> values with $RAD_REPLY{'Person-Type'}?
>
>  No.  That entry is an array.  You need @{$RAD_REPLY{'Person-Type'}},
> and then de-reference each entry from there.
>

I'm still having no luck trying to get all of the values off this multi-valued attribute.. I believe I've got the perl syntax correct but when I try to dereference @{$RAD_REPLY{'Person-Type'}} to check through all values, I get:

rlm_perl: perl_embed:: module = /etc/freeradius/groupcheck.pl , func = post_auth exit status= Can't use string ("employee") as an ARRAY ref while "strict refs" in use at /etc/freeradius/groupcheck.pl line 112.

It appears as though $RAD_REPLY{'Person-Type'} is a string not an array.. if I ask for value, I get "employee"..  

But again, all three values are returned:

...
[ldap] looking for reply items in directory...
  [ldap] personType -> Person-Type = "employee"
  [ldap] personType -> Person-Type = "fulltime"
  [ldap] personType -> Person-Type = "it"
WARNING: No "known good" password was found in LDAP.  Are you sure that the user is configured correctly?
[ldap] user atrack authorized to use remote access
  [ldap] ldap_release_conn: Release Id: 0
++[ldap] returns ok
...

I did notice the following in the post-auth debug:

...
rlm_perl: Added pair User-Name = atrack
rlm_perl: Added pair MS-MPPE-Recv-Key = 0xc8bf3146d6b3966f0838e304da9bf9d2
rlm_perl: Added pair Person-Type = employee
rlm_perl: Added pair EAP-Message = 0x03090004
rlm_perl: Added pair MS-MPPE-Send-Key = 0x46948d82b0b42f60dd31e93a0d643790
...

So, for Person-Type, only the one value, employee, is passed to the perl module?  Shouldn't there be another two lines of this for the other two values?

I (finally) upgraded to 2.1.12, with same results.  How can I get the other values? 

Or, is there a better way to do this?  

Thanks,

A.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeradius.org/pipermail/freeradius-users/attachments/20120502/ea476006/attachment.html>


More information about the Freeradius-Users mailing list