rlm_perl and empty user name variable

Gustave Nylander gustave.nylander at gmail.com
Wed Oct 26 20:52:43 CEST 2005


I have freeradius 1.05 configured with rlm_perl to handle 
authentication, and the problem seems to be that the 
$RAD_REQUEST{'User-Name'} variable is an empty string within the perl 
script I have set up. The perl script is based on the example.pl script 
provided with freeradius.

My users file has one line: DEFAULT Auth-Type := Perl_Auth

The applicable sections of radiusd.conf are:

modules section:
perl {
               module = "/home/rpm/test_rad.pl"
               func_authenticate = authenticate
               func_authorize = authorize
       }


authorize {
       files
}

authenticate {
       Auth-Type Perl_Auth {
               perl
       }
}

The perl script itself has the variables toward the top uncommented, and 
the authenticate sub is:

sub authenticate {
       # For debugging purposes only
       &log_request_attributes;

       if ($RAD_REQUEST{'User-Name'} =="") {

               return RLM_MODULE_REJECT;
       }

       if ($RAD_REQUEST{'User-Name'} =~ /^fred/i) {
               # Reject user and tell him why
               $RAD_REPLY{'Reply-Message'} = "Denied access by rlm_perl 
function";
               return RLM_MODULE_REJECT;
       } else {
               # Accept user and set some attribute
               $RAD_REPLY{'h323-credit-amount'} = "100";
               return RLM_MODULE_OK;
       }
}

All authentication attempts get caught with the empty string check in 
the code above. Below is the radiusd debug:

rad_recv: Access-Request packet from host 127.0.0.1:43349, id=196, 
length=55
       User-Name = "gus"
       User-Password = "123"
       NAS-IP-Address = 255.255.255.255
       NAS-Port = 0
 Processing the authorize section of radiusd.conf
modcall: entering group authorize for request 0
   users: Matched entry DEFAULT at line 1
 modcall[authorize]: module "files" returns ok for request 0
modcall: group authorize returns ok for request 0
 rad_check_password:  Found Auth-Type Perl_Auth
auth: type "Perl_Auth"
 Processing the authenticate section of radiusd.conf
modcall: entering group Auth-Type for request 0
rlm_perl: Added pair Auth-Type = Perl_Auth
 modcall[authenticate]: module "perl" returns reject for request 0
modcall: group Auth-Type returns reject for request 0
auth: Failed to validate the user.



More information about the Freeradius-Users mailing list