httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From André Warnier ...@ice-sa.com>
Subject Re: [users@httpd] Pass-through LDAP authentication with Internet Explorer and Active Directory
Date Wed, 17 Sep 2008 09:56:38 GMT
Clayton Hicklin wrote:
> On Tue, Sep 16, 2008 at 4:21 PM, André Warnier <aw@ice-sa.com> wrote:
> 
>>>>   I'm beginning to think
>>> we're chasing our tails.  IE is going to pass the credentials in NTLM
>>> format, I believe.  Even if we got the username right, I'm thinking maybe
>>> the password won't be readable by mod_authn_ldap.  I don't know.
>>>
>>>  IE can do either of 3 things, as far as I know :
>> 1) if it is doing Basic authentication, it will pass the user-id and
>> password (as entered by the user in the pop-up login dialog), both merely
>> encoded in a Base64 format.
>> It passes that in a "Authorization:" request header.
>>
> 
> I believe it is basic authorization.  The AuthType is set to Basic and the
> AuthBasicProvider (not sure if that's right, I don't have access to it at
> the moment) is set to ldap.  So, maybe there is no NTLM involved here.  The
> user is already authenticated with the domain.  My original thought is that
> IE sees the site requesting Basic authentication and is supplying the
> domain\user and base64 password.  That's why I was hoping to just strip out
> the domain\ part.
> 
> 
>> 2) if it is doing Digest authentication, it will pass the user-id and a
>> cryptic "token" based on the user-id and password entered by the user in a
>> pop-up login dialog. The server-side must then somehow verify that this
>> token matches one generated server-side on the base of the user password.
>> It passes that in a "Authorization:" request header.
>> That is anyway not what you want here.
>>
> 
> Nope, not doing digest.
> 
> 
>> 3) if it is doing NTLM authentication, then it will also pass the user-id
>> and a token, but as a result of a multi-step negociation with an appropriate
>> NTLM module on the server, which itself needs to talk to a Windows Domain
>> Controller etc..
>> At the end of all that, IE will pass the user-id and token to the server
>> with the request, in, I believe, a WWW-authenticate: header.
>> But that token does not contain the password, and IE at no point gets to
>> know the password.
>>
> 
> Seems like it would only do NTLM if I'm using the mod_auth_sspi module.  The
> more I think about it, the more it doesn't make any sense that IE would try
> and do NTLM when Apache is requesting Basic.
> 
> 
>> But maybe do not give up yet.
>>
>> If you are in a Windows Domain, and it is inside a corporate environment,
>> then presumably this REMOTE_USER that IE is sending, is already the result
>> of some secure Domain authentication which happened before.
>> And if so, you might be able to accept it as secure enough, and use its
>> content as a user-id.
>> The whole point now is to know whether you really need to know the user
>> password, or if the mere fact of verifying that the user indeed exists in
>> the LDAP system is enough (and maybe not even that).
>> It all depends if you want to provide a reall secure login system, or if
>> your purpose is to provide a user-friendly SSO mechanism for Apache
>> applications.
>>
> 
> Well, I need to do group authentication via LDAP, and the LDAP module binds
> with the DN it looks up using the username provided by the browser.  It
> definitely needs the password.
> 
> 
>> One item just to clear up a lingering doubt : when you show the user-id
>> that auth_ldap is dumping to the logfile, was that the result of a popup
>> login dialog in IE, or was there no such popup dialog involved ?
>>
>>
> Not the result of the popup, that was IE trying to send the credentials
> automatically.
> 
That is what I really do not understand here :
1) the first time IE tries to access the URL, it does not send an HTTP 
authentication header, because it does not even know that the URL 
requires authentication.
2) then the server sends him back a "401 authentication required", along 
with the type of authentication.  And let's say it is "Basic".
3) then it would seem that IE automatically sends the "user\domain", and 
the user password, encoded in a "Basic" authorisation header.

That last part #3 seems extremely unlikely to me, for several reasons :
- first, it supposes that IE already knows the user's password.  I don't 
see how it would.  Even if the user has already authenticated to the 
Windows Domain :
   a) the NTLM authentication never "circulates" the user's password on 
the network, only encrypted tokens that depend, in part, on the user 
password.
   b) it would mean that any server that sent a "401, Basic" response to 
IE, would receive the user's password in return, in clear.  That seems 
like such a big security hole that I don't believe it.
(If it is true, then this is going to give some nightmares to a few 
hundred thousand network administrators worldwide).

So, there *must* be something else going on here.

(I can still imagine that somehow IE would send the "domain\userid", 
although even that I don't really understand).

On a separate level :

To get some user information using LDAP, you do not necessarily need 
that specific user's password.  It should be possible to get information 
about a user, by using some special login user-id/password (always the 
same) to connect to the LDAP server , and be allowed at least to read 
the "public" part of other user's records (not their password e.g., but 
their group memberships probably yes). If that was not possible, then an 
LDAP server would not be useful as a directory back-end, which is their 
principal function.

I am sorry, but my own circumstances are such that I am not working 
within a Windows domain, so I can just not test this easily.
When I do such kind of work, I also tend to do it on-site, at the 
customer for which it is needed, so that I am sure that I am in exactly 
the right context.


André

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org


Mime
View raw message