I’m vaguely aware that on a computer joined to a domain IE can be asked to send some extra headers that I could use to automatically sign on to an application. I’ve got apache running on a windows server with mod_php. I’d like to be able to avoid the user having to log in if necessary. I’ve found some links talking about Kerberos and Apache modules.
http://www.onlamp.com/pub/a/onlamp/2003/09/11/kerberos.html?page=last
https://metacpan.org/pod/Apache2::AuthenNTLM
Since I’m running on Windows it’s proven to be non-trivial to get Perl or Apache modules installed. But doesn’t PHP already have access to HTTP headers?
I found this but it doesn’t do any authentication, it just shows that PHP can read the NTLM headers.
http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/
I’d like to be able to have my users just point to the application and have them automatically authenticated. Has anyone had any experience with this or gotten it to work at all?
UPDATE
Since originally posting this question, we’ve changed setups to nginx and php-fcgi still running on windows. Apache2 and php-cgi on windows is probably one of the slowest setups you could configure on windows. It’s looking like Apache might still be needed (it works with php-fcgi) but I would prefer a nginx solution.
I also still don’t understand (and would love to be educated) why HTTP server plugins are necessary and we can’t have a PHP, web server agnostic solution.
All you need is the
mod_auth_sspiApache module.Sample configuration:
And don’t forget that you can also use Firefox for transparent SSO in a Windows domain: Simply go to
about:config, search fornetwork.automatic-ntlm-auth.trusted-uris, and enter the host name or FQDN of your internal application (like myserver or myserver.corp.domain.com). You can have more than one entry, it’s a comma-separated list.