Checkval weird issue with LDAP backend and PAM authentication

Marco Carcano marco at
Thu Nov 25 23:12:50 CET 2010

Hi Alan

I RTM unlang, but I have to admit I only got confused - The only thing  
I have understood is to write a simple statement like this (in  
authorize section)

         if (NAS-Identifier == "ftp" ) {
         else {

and I think is even wrong because returns always OK :(((((

I noticed on some posts people using a syntax like if (NAS-Identifier  
== %{sql: SELECT ... BLA BLA} )

but I have not been able to see a working example using ldap, ... may  
you provide an example, please? I've not been able to figure out how  
to write it down.

my situation is this: eckAllowedServices is a multistring attribute  
that contains a NAS-Identifier per line. I use service names as NAS- 
Identifiers in order to perform users authorization to services - eg  
authorize ftp access on a per users basis

this is what happen when I do a ldapsearch

ldapsearch -LLL -b cn=testuser,ou=Users,dc=marcolinux,dc=local  
eckAllowedServices -x -D  
"CN=FreeRADIUS,OU=AAA,OU=Services,DC=marcolinux,DC=local" -w  

dn: cn=testuser,ou=Users,dc=marcolinux,dc=local
eckAllowedServices: ftp
eckAllowedServices: httpProxy

that shows that the DN used by freeradius is able to read  
eckAllowedServices attribute

as I wrote in the previous post, I updated ldap.attrmap inserting the  
following line

checkItem       NAS-Identifier                  eckAllowedServices

in order to do the "binding" between radius and LDAP

and this is the extension of the LDAP schema (eck.schema)

attributetype ( NAME 'eckAllowedServices'    
DESC 'Services the user is allowed to login'   EQUALITY  
caseIgnoreIA5Match   SUBSTR caseIgnoreIA5SubstringsMatch   SYNTAX{128} )
objectClass ( NAME 'eckGenericObject'         
AUXILIARY        DESC 'an ECK generic object'        MAY ( locked $  
eckPublicKey $ eckPrivateKey $ userPKCS12 $ allowProxy $  

thinking at the %{sql:SELECT ...} example I tough I syntax almost like  

         if (NAS-Identifier == "ldap:cn=%{User- 
Name},ou=Users,dc=marcolinux,dc=local (eckAllowedServices)" ) {
         else {

the aim is to check if NAS-Identifier supplied by the NAS is equal to  
one of the multivalue strings of eckAllowedServices

but I always got this message - it doesnt matter if the user has got  
or hasn't the eckAllowedServices attribute:

  if (NAS-Identifier == "ldap:cn=%{User- 
Name},ou=Users,dc=marcolinux,dc=local (eckAllowedServices)" )
         expand: ldap:cn=%{User-Name},ou=Users,dc=marcolinux,dc=local  
(eckAllowedServices) ->  
ldap:cn=testuser,ou=Users,dc=marcolinux,dc=local (eckAllowedServices)
? Evaluating (NAS-Identifier == "ldap:cn=%{User- 
Name},ou=Users,dc=marcolinux,dc=local (eckAllowedServices)" ) -> FALSE
++? if (NAS-Identifier == "ldap:cn=%{User- 
Name},ou=Users,dc=marcolinux,dc=local (eckAllowedServices)" ) -> FALSE
++- entering else else {...}
+++[reject] returns reject

I gave a look to ldap.log - with verbose debugging, ... I found  
references to eckAllowedServices, but not as a request for only one  
attribute - as I was expecting for the unlang expression I wrote: I  
got it mixed with lots of other attributes - that is the previous ldap  
lookup of the ldap module of the authorization section: in other words  
- I think the unlang expression above is useless and is not processed  
with a query to the ldap server . I certainly mis-typed the syntax,  
but I'm not able to figure a syntax :(((

Alan, may you provide an example unlang for LDAP? Maybe I am slow  
learner, but I think it could help me (and I hope others) a lot

Ah - I use freeradius2-2.1.7-7.el5 - that is the "official" from  
RedHat/CentOS - please, don't tell me I have to repackage it to 2.1.10  
- I had done this with quite a lot of other packages in ECK

Il giorno 23/nov/10, alle ore 14:33, Alan DeKok ha scritto:

> marco wrote:
>> Sorry Alan
>> I've not realized that the logs had became a garbage :O( - maybe a  
>> webmail realted issue of my ISP.
>> Now I Bcc myself to see how does it appear to recipients
>> I tried "man unlang" but got no manual entry - I'm using Freeradius  
>> packaged for CentOS - I'll give a look to 
>> , I think is the same.
>  <shrug>  Upgrade to 2.1.10.  You're using a very old version of the
> server.
>  Alan DeKok.
> -
> List info/subscribe/unsubscribe? See

More information about the Freeradius-Users mailing list