You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by "Dietrich, Martin" <di...@pg.com> on 2008/01/03 15:06:59 UTC

FW: mod_auth_ldap

Hallo.

Ich habe ein Problem mit der Authentifizierung von Usern „gegen“ unser Unternehmens-LDAP Directory, und möchte auf diesem Weg erfahren, ob es sich um einen Bug, ein Feature oder eine Wissenslücke handelt ☺

Die Situation:

Ich habe einen Apache 2.0.41 mit mod_ldap/mod_auth_ldap
Der LDAP Server erlaubt keine anonyme Suche, weshalb ich per AuthLDAPBindDN und AuthLDAPBindPassword einen generischen User zum Binden verwende, um danach dann den „eigentlichen“ user zu suchen und zu Binden.
Die gute Nachricht: Es klappt. 
Die schlechte: nur 5 Minuten.

Bisher haben meine Analysen ergeben, dass der LDAP Server das Binding meiner generischen Id nach ungefähr 5 Minuten Inaktivität löst.
(Nachvollzogen mit einem LDAP-Browser)
Das Problem ist nur, das mod_auth_ldap damit scheinbar nicht umgehen kann.
In der Praxis bedeutet das, das sich die Nutzer anmelden können, und auch alles OK ist, solange keine 5 Minuten inaktivität besteht.
Sobald dies eintritt, wird dem User die Eingabemaske für die Credentials angezeigt.
Per Firebug habe ich aber gesehen, dass password und username übermittelt wurden.
Im error-log ist zu lesen:

[5400] auth_ldap authenticate: user dietrich.m.3 authentication failed; URI /php/script.gui [LDAP: ldap_simple_bind_s() failed][Unavailable], referer: http://myserver/php/script.gui

Ich habe mal versucht die mod_ldap directiven 
LDAPCacheTTL und auch LDAPOpCacheTTL auf Werte kleiner 5 Minuten (und auch nahe 0) zu setzen, um ein erneutes Bind zu erzwingen – leider ohne Erfolg.
Die Cache-Directiven scheinen keinen Einfluß auf das Binding mit der generischen ID zu haben. 
Dieses wird immer gehalten, und führt nach dem close auf Seite des LDAP-Servers nicht zu einem Re-Bind, sondern zu einem Fehler…

Die relevanten Settings meiner httpd.conf:

#### LDAP Configurations
LDAPSharedCacheSize 200000
LDAPCacheEntries 1024
LDAPCacheTTL 0
LDAPOpCacheEntries 1024
LDAPOpCacheTTL 100

AuthLDAPEnabled on

AuthLDAPBindDN uid=guser,ou=people,ou=firma,o=world
AuthLDAPBindPassword geheim
AuthLDAPURL ldap://groupservice.firma.com:989/ou=people,ou=firma,o=world?extshortname
AuthName "LDAP-Status"

AuthLDAPAuthoritative on
Require valid-user

Ich bin für jeden Hinweis dankbar !
Regards,
Martin Dietrich


RE: FW: mod_auth_ldap

Posted by "Dietrich, Martin" <di...@pg.com>.
Sorry, Typo....
Ich habe Version 2.0.61, nicht 41

Regards,
Martin Dietrich

Re: FW: mod_auth_ldap

Posted by Max Dittrich <ma...@t-online.de>.
Dietrich, Martin schrieb:
> Hallo.
> 
> Ich habe ein Problem mit der Authentifizierung von Usern „gegen“ unser Unternehmens-LDAP Directory, und möchte auf diesem Weg erfahren, ob es sich um einen Bug, ein Feature oder eine Wissenslücke handelt ☺
> 
> Die Situation:
> 
> Ich habe einen Apache 2.0.41 mit mod_ldap/mod_auth_ldap
> Der LDAP Server erlaubt keine anonyme Suche, weshalb ich per AuthLDAPBindDN und AuthLDAPBindPassword einen generischen User zum Binden verwende, um danach dann den „eigentlichen“ user zu suchen und zu Binden.
> Die gute Nachricht: Es klappt. 
> Die schlechte: nur 5 Minuten.

Vielleicht hilft ein Update auf eine neuere Version des Apaches.

aus     http://www.apache.org/dist/httpd/CHANGES_2.0
unter   Changes with Apache 2.0.50

>   *) mod_ldap calls ldap_simple_bind_s() to validate the user
>      credentials.  If the bind fails, the connection is left
>      in an unbound state.  Make sure that the ldap connection
>      record is updated to show that the connection is no longer
>      bound. [Brad Nicholes]

[...]

Grüsse,
.max


--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


RE: FW: mod_auth_ldap

Posted by "Dietrich, Martin" <di...@pg.com>.
Hallo Falk,

Zunächst mal danke für die Antwort.
Die Trennung des Bindings nach ca. 5 Minuten macht der LDAP Server, dass hat auch ein kurzer Test mit einem (Java-)LDAP Browser bestätigt.
Wenn ich da ein Binding mache und nach 5 Minuten Inaktivität ein Kommando ausführen will, dann gibt's ein "[ERROR] connection closed".
Das würde ich aber nicht als Problem bezeichnen, eher als Nachvollziehbar - schließlich läuft so ziemlich jede Authentifizierung darauf, da ist etwas Housekeeping ganz ok. (Es geht um ca. 140.000 User und bestimmt Hunderte von Applikationen...) 
Für mich sieht es eben so aus, als das mod_auth_ldap diese Trennung nicht direkt mitbekommt.
Wenn ich es richtig verstanden habe, laufen die folgenden 3 Schritte bei der ersten Authentifizierung ab:

1.) Binding mit statischem Account
	Im Logfile dazu leider keinerlei Einträge (LogLevel debug)
2.) Suche des Users (authenticate)
	[Fri Jan 04 08:45:19 2008] [debug] mod_auth_ldap.c(337): [client 143.39.217.53] [2732] auth_ldap authenticate: using URL ldap://groupservice.firma.com:989/ou=people,ou=firma,o=world?extshortname
	[Fri Jan 04 08:45:20 2008] [debug] mod_auth_ldap.c(411): [client 143.39.217.53] [2732] auth_ldap authenticate: accepting dietrich.m.3
3.) Binding mit User Credentials (authorize)
	[Fri Jan 04 08:45:20 2008] [debug] mod_auth_ldap.c(550): [client 143.39.217.53] [2732] auth_ldap authorise: successful authorisation because user is valid-user

Bei allen folgenden (schätzungsweise innerhalb der in KeepAliveTimeout oder auch LDAPCacheTTL definierten Zeitspanne) scheinen nur Schritte 2 und 3 zu laufen.

Nach besagten (ca.) 5 Minuten kommt dann sozusagen 

4.) Disconnect vom LDAP Server

Damit schlägt Punkt 2 (Suche des Users) also fehl, was mod_auth_ldap aber eben nicht veranlasst ein neues Binding aufzubauen, sondern einen Fehler zu Produzieren: 

2.) Suche des Users (authenticate)
	[Fri Jan 04 08:53:53 2008] [debug] mod_auth_ldap.c(337): [client 143.39.217.53] [2732] auth_ldap authenticate: using URL ldap://groupservice.firma.com:989/ou=people,ou=firma,o=world?extshortname
	[Fri Jan 04 08:53:53 2008] [warn] [client 143.39.217.53] [2732] auth_ldap authenticate: user dietrich.m.3 authentication failed; URI /php/test/auth.gui [LDAP: ldap_simple_bind_s() failed][Unavailable]

Der Vollständigkeit halber hier noch die relevanten Loglines des Server Starts:
[Fri Jan 04 08:44:44 2008] [debug] mod_auth_ldap.c(785): [3164] auth_ldap url parse: `ldap://groupservice.firma.com:989/ou=people,ou=firma,o=world?extshortname'
[Fri Jan 04 08:44:44 2008] [debug] mod_auth_ldap.c(806): [3164] auth_ldap url parse: Host: groupservice.firma.com
[Fri Jan 04 08:44:44 2008] [debug] mod_auth_ldap.c(808): [3164] auth_ldap url parse: Port: 989
[Fri Jan 04 08:44:44 2008] [debug] mod_auth_ldap.c(810): [3164] auth_ldap url parse: DN: ou=people,ou=firma,o=world
[Fri Jan 04 08:44:44 2008] [debug] mod_auth_ldap.c(812): [3164] auth_ldap url parse: attrib: extshortname
[Fri Jan 04 08:44:44 2008] [debug] mod_auth_ldap.c(814): [3164] auth_ldap url parse: scope: base
[Fri Jan 04 08:44:44 2008] [debug] mod_auth_ldap.c(819): [3164] auth_ldap url parse: filter: (null)
[Fri Jan 04 08:44:44 2008] [debug] mod_auth_ldap.c(884): LDAP: auth_ldap not using SSL connections
[Fri Jan 04 08:44:44 2008] [debug] util_ldap.c(1501): LDAP merging Shared Cache conf: shm=0x59f5c0 rmm=0x59f5e8 for VHOST: server.firma.com
[Fri Jan 04 08:44:44 2008] [notice] LDAP: Built with Microsoft LDAP SDK
[Fri Jan 04 08:44:44 2008] [notice] LDAP: SSL support available
[Fri Jan 04 08:44:44 2008] [notice] Apache configured -- resuming normal operations


Regards,
Martin Dietrich

-----Original Message-----
From: Falk Hackenberger [mailto:apache@spam.huckley.de] 
Sent: Donnerstag, 3. Januar 2008 19:06
To: users-de@httpd.apache.org
Subject: Re: FW: mod_auth_ldap

Hallo Martin,

das der Ldap server das Problem ist, kanst Du ausschließen?

falk

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------


Re: FW: mod_auth_ldap

Posted by Falk Hackenberger <ap...@spam.huckley.de>.
Hallo Martin,

das der Ldap server das Problem ist, kanst Du ausschließen?

falk

--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------