As a matter of fact... I've just completed development and delivery of the solution for our intranet.
In a nutshell, MS Active Directory shares part of it's data as an LDAP server. This can be modified and extended from the Administrators control. It shares on the same standard port... and acts just like your home grown LDAP server (I sound so confident now... but that wasn't always so).
We were attempting to do this using JSP - and there were several examples of ASP solutions. I decided to use an LDAP taglibrary -- but this failed as it had limited functionality and was too restrictive.
Based on some suggestions from the Java people, I started looking into the Java Context Factory (of which there were many examples). Within a few hours I was able to connect, authenticate and search an non-anonymous Active Directory on first and last names (of course much more is possible -- but that was the scope).
The biggest hurdle for me was understanding how the LDAP schema was set up. That was just a learning curve thing... lots of online resources to help.
I don't know of any commercial solutions out there... but this stuff isn't secret... and so many tutorials exist, that I doubt you would have a problem finding someone who could code you a solution.
Sorry for the rant... it's late and it was a good week
Jeff
PS. I extended the phone book lookup to allow querying on the departments within the company (they loved that feature - that was 1 line of code). I present a list of matches to their query, then allow them to click one. This triggers another lookup to the AD and I retrieve back a bunch of other data about that entry. You can expose lots of data to the LDAP service... so watch your security.