I needed to authenticate a website for a schoole against an Active Directory server today. I found the job surprisingly easy.
My first attempt was using a pam smb module, and an apache pam module. This worked well, but had a couple of flaws:
Oh well, scraped that idea.
I looked at the smb modules for apache. This was a port of the pam_smb module to the apache api, didn't really gain me much, except it removed the limitation on one /etc/pam.d/ file for apache. Not that this really was much of a problem if you didn't have group support.
my final approach to the problem was an ldap authentication module for apache. This hit the nail on the head.
The major stumbling block I had was trying to find out the BaseDN. If you bind anonymously you can't search or anything useful. To bind as someone useful, you have to know their dn, including the BaseDN. Turns out the BaseDN was the name of the 'domain' with dc1?'s inserted. so if your domain is 'example.com', your baseDN is dc=example,dc=com. I'm not sure if this can be configured to be something else.
<Directory /var/www/staff>
AuthLDAPURL ldap://ads.example.com:389/OU=Users,OU=Teachers,DC=example,DC=com?sAMAccountName?sub?(objectClass=user) AuthLDAPBindDN cn=user,cn=Users,dc=example,dc=com AuthLDAPBindPassword password-here AuthType? Basic AuthName? "Mumble School Intranet" require valid-user
</Directory>
/var/www/staff should be the path that you want to secure.
ads.example.com should be the hostname of your ads server, I suspect you can use something like _ldap._tcp.example.com here, but I didn't experiment, comments anyone?
user should be some user which has read privilege to the directory
password-here should be users password
and voila! It worked.
where:
the sAMAccountName is the ldap attribute ActiveDirectory uses for storing the username.
1?: Domain Component
One page links to ActiveDirectoryAuthenticationNotes:
lib/plugin/WlugLicense.php:99: Warning: Invalid argument supplied for foreach()
lib/plugin/WlugLicense.php:111: Notice: Undefined variable: ignore_authors
lib/plugin/WlugLicense.php:111: Notice: Undefined variable: ignore_authors