RPGamer: Apache2.2 - Auth gegen LDAP auch für Subdomains?

Hallo zusammen,

folgendes Problem. Ich habe einen geschützten Bereich https://subdomain.host.tld/secure/ - die Anmeldung erfolgt gegen einen LDAP-Server auf der Adresse https://subdomain.host.tld/ mit einem HTML-Formular. Soweit so gut!

In dem geschützten Bereich gibt es Links auf weitere interne Seiten, unter anderem auch in https://foo.subdomain.host.tld/secure/... auch foo.subdomain.host.tld landet erstmal auf diesem Apachen (er ist zusätzlich ein Reverse Proxy).
Klickt der User aber auf diesen Link muss er sich jedoch erneut am LDAP authentifizieren. Warum?? Ich bin doch bereits auf einer höheren Ebene (nämlich subdomain.host.tld) sogar am gleichen Server und dem gleichen LDAP identifiziert.
Einerseits ist mir klar, das hier wieder <Location /secure/> greift, aber da hab ich mich ja schon bei subdomain.host.tld authentifiziert...?!

Digest geht übrigens nichts zusammen mit LDAP, es muss also irgendwie mit Basic und der sub-sub-domain gehen...

Anbei die Config (der Apache ist gleichzeitig Reverse-Proxy, die Zeilen hab ich versucht rauszuschmeißen, wenn ich was vergessen hab - nicht wundern):

<VirtualHost *:443>
  ServerAdmin webmaster@localhost
  ServerName  subdomain.host.tld
  Serveralias www.subdomain.host.tld
  SSLEngine On
  SSLCertificateFile /etc/apache2/ssl/host.tld.crt
  SSLCertificateKeyFile /etc/apache2/ssl/host.tld.pem
  <Location /secure/>
    Options FollowSymLinks
    Deny from any
    AuthName "LDAP"
    AuthType Basic
    AuthBasicProvider ldap
    AuthLDAPBindDN xxx
    AuthLDAPBindPassword xxx
    AuthLDAPUrl ldap://
    AuthzLDAPAuthoritative off
    Require valid-user
  </Location>
  DocumentRoot /var/www/
  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>
  <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
  </Directory>
</VirtualHost>

  1. Hallo RPGamer,

    bei der Konfiguration sollte Dir ja aufgefallen sein, dass foo.subdomain.host.tld ein anderer VirtualHost als subdomain.host.tld ist. Auch wenn dem nicht so wäre, was aber Deine angegebene Konfiguration verneint, Du also foo.subdomain.host.tld als ServerAlias gesetzt hättest, würde dies keinen Unterschied machen. Für das Login ist nämlich der Client verantwortlich. Der unterscheidet nach Domains. Ist Domain A als Zeichenkette identisch bzw. unterscheidet sie sich nur in der Pseudodomain "www" von Domain B, wird der Pfad überprüft, und ist dieser ebenfalls identisch, werden die Authentifizierungsmerkmale erneut gesendet. Dabei spielt eben keine Rolle, ob Domain A und B zur gleichen IP-Adresse aufgelöst werden, was offenbar Deine Überlegung ist.

    Man könnte das Problem mittels verschiedener Krücken angehen, ratsam aber ist nur, konsequent eine Domain zu verwenden.

    Gruß aus Berlin!
    eddi

  2. Hallo,

    Klickt der User aber auf diesen Link muss er sich jedoch erneut am LDAP authentifizieren. Warum?? Ich bin doch bereits auf einer höheren Ebene (nämlich subdomain.host.tld) sogar am gleichen Server und dem gleichen LDAP identifiziert.

    Der Browser bekommt ja nichts vom LDAP mit, das macht nur der Apache intern. Daher weiß der Browser nicht, dass diese Bereiche alle zusammengehören. Denn bei Basic Auth ist Hostname + Realm eindeutig für den Browser, Subdomains zählen da nicht (im Gegensatz zu Cookies).

    Wenn ich mich richtig erinnere, ist so etwas dagegen im HTTP Digest Auth vorgesehen. Allerdings zeigt diese Frage bei StackOverflow, dass das wohl nur im Opera funktioniert.

    Zusammengefasst: Dass, was Du vorhast, scheitert zum Teil an den Limitierungen im Design von HTTP, zum anderen Teil an den aktuellen Browsern.

    Viele Grüße,
    Christian