Freeradius Auth via LDAP against Active Directory Server 2003

Phil Mayers p.mayers at imperial.ac.uk
Sat Apr 28 14:15:31 CEST 2007


I haven't been following your (quite extensive) queries, so apologies if 
I've missed something fundamental.

I honestly don't know why this is proving so difficult. I've just tested 
this against our own 2k3 AD service, and although I'm pretty familiar 
with FR it took under 5 minutes. Try following the instructions below. 
These were tested with FreeRadius 1.1.4

1. First, create or locate an existing account which FreeRadius can bind 
and do it's searches as. Record the following variables:

SEARCHDN=<the DN of the account>
SEARCHPW=<the password>
BASEDN=<the DN below which all your accounts live in AD>
ADHOST=<hostname of the AD controller you'll search against>

For example, these might be:

SEARCHDN=CN=freeradius,OU=Users,OU=My Site,DC=mysite,DC=com
SEARCHPW=blahblah
BASEDN=OU=My Site,DC=mysite,DC=com

2. Next, take the default "radiusd.conf"

3. Find the start of the modules section:

modules {
  ...

Delete this line and all the following lines

4. Insert the following config:

modules {
   ldap {
     server = "$ADHOST"
     identity = "$SEARCHDN"
     password = "$SEARCHPW"

     basedn = "$BASEDN"
     filter = "(sAMAccountName=%{Stripped-User-Name:-%{User-Name}})"

     dictionary_mapping = ${raddbdir}/ldap.attrmap

     ldap_connections_number = 5
     timeout = 4
     timelimit = 3
     net_timeout = 1
   }

   preprocess {
     huntgroups = ${confdir}/huntgroups
     hints = ${confdir}/hints

     with_ascend_hack = no
     ascend_channels_per_line = 23

     with_ntdomain_hack = no
     with_specialix_jetstream_hack = no
     with_cisco_vsa_hack = no
   }

   detail {
     detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d
     detailperm = 0644
   }

}

instantiate {
}

authorize {
   preprocess

   ldap
}

authenticate {
   Auth-Type LDAP {
     ldap
   }
}


preacct {
   preprocess
}

accounting {
   detail
}


session {
}

post-auth {
}

pre-proxy {
}

post-proxy {
}

5. Start the server with -X

6. Run "radtest" to send a checking PAP request

It should work.

The above config is the ABSOLUTE BARE MINIMUM server config which will 
check PAP requests ONLY against an AD LDAP server. I do NOT recommend 
you go into service with this config. Try to look at it, understand how 
it's doing what it's doing, *then* start again with the default 
FreeRadius config and make the absolute minimum changes to get back to 
that point.



More information about the Freeradius-Users mailing list