Martin Bertens: VirtualHost und Passwortschutz unmöglich?

Hallo Forum,

ich muss einen Apache VirtualHost-Eintrag nutzen, um eine Subdomain vor externem Zugriff zu schützen. Nun kann man aber so etwas:

AuthName "geheim"
AuthType Basic
AuthUserFile /www/.htpasswd
Require user nullnull7

...leider nicht in die VirtualHost-Direktive einfügen:

http://httpd.apache.org/docs/1.3/mod/core.html#authname

"Context: directory, .htaccess"

Welche Alternativen habe ich denn? Directory und .htaccess scheiden leider aus, die dürfen auch domainübergreifend keine Unterschiede aufweisen. Kann man auf Ebene der VirtualHost-Einträge denn gar keinen Schutz einbauen?

Danke und Grüsse,
Martin

  1. hi,

    Directory und .htaccess scheiden leider aus, die dürfen auch domainübergreifend keine Unterschiede aufweisen.

    Warum müssen die deshalb ausscheiden?

    Es wäre ja noch denkbar, über die Abfrage von Umgebungsvariablen (z.B. im Request mitgeschickter Hostname) mittels SetEnvIf und Allow/Require/Satisfy eine Kombination aufzubauen, die nur bei Anforderung der speziellen Subdomain eine Authentifizierung erfordert, und ansonsten so reinlässt ...

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Warum müssen die deshalb ausscheiden?

      Es wäre ja noch denkbar

      Ok, es geht mir darum, dass ich die Konfiguration einer weiteren Subdomain, die die selbe Verzeichnisstruktur etc. nutzt an genau einer Stelle, nämlich im _Kontext_ des VirtualHosts einstellbar machen möchte. Mit SetEnv kann ich dann zwar irgendeinen Wert setzen, der die Subdomain identifizierbar macht, ich kann aber in der für alle Subdomains zentralen .htaccess-Datei den mit SetEnv gesetzten Wert nicht auswerten, oder doch?

      Danke und Grüsse,
      Martin

      1. hi,

        Mit SetEnv kann ich dann zwar irgendeinen Wert setzen, der die Subdomain identifizierbar macht, ich kann aber in der für alle Subdomains zentralen .htaccess-Datei den mit SetEnv gesetzten Wert nicht auswerten, oder doch?

        Oder doch, würde ich sagen.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Mist, jetzt habe ich es an die falsche Stelle gepostet. Deswegen hier nochmal (Ich hoffe ich habe durch dieses Crossposting keine ungeschriebene Forumsregel gebrochen, man verzeihe mir):

          Hallo wahsaga,

          wärst Du so freundlich mir noch einen Tipp zu geben, wie? Ich habe die Apache-Doku gründlich durchgelesen und finde keinen Hinweis darauf, wie man in .htaccess-Dateien die mit SetEnv gesetzten Werte ausliest und als Variable, zum Beispiel an

          Require user <Variable>

          übergibt. Vielen Dank dafür!
          Martin

          1. hi,

            Ich habe die Apache-Doku gründlich durchgelesen und finde keinen Hinweis darauf, wie man in .htaccess-Dateien die mit SetEnv gesetzten Werte ausliest

            "Auslesen" weniger, eher darauf reagieren.

            und als Variable, zum Beispiel an
            Require user <Variable>
            übergibt.

            Nee, so geht's nicht.

            Mit
             SetEnvIf {bedingung} varName
            eine Umgebungsvariable setzen, für den ungeschützten Zugriff, und mit
             Allow from env=varName
            den Zugriff erlauben, wenn eben dieses varName gesetzt ist.

            Daneben noch mit
             Require valid user (o.ä.)
            die Bedingung für den Passwortschutz formulieren - und dann mittels
             Satisfy any
            dafür sorgen, dass Zugriff erlaubt wird, wenn eine der beiden "Bedingungen" (Allow oder Require) erfüllt ist ...

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo wahsaga,

    wärst Du so freundlich mir noch einen Tipp zu geben, wie? Ich habe die Apache-Doku gründlich durchgelesen und finde keinen Hinweis darauf, wie man in .htaccess-Dateien die mit SetEnv gesetzten Werte ausliest und als Variable, zum Beispiel an

    Require user <Variable>

    übergibt. Vielen Dank dafür!
    Martin

  3. echo $begrüßung;

    ich muss einen Apache VirtualHost-Eintrag nutzen, um eine Subdomain vor externem Zugriff zu schützen. Nun kann man aber so etwas:
    ...leider nicht in die VirtualHost-Direktive einfügen:

    "Context: directory, .htaccess"

    Mit directory ist gemeint:
    <Directory /pfad/zum/verzeichnis>
    ...
    </Directory>

    Diese Anweisung kann auch in der Konfiguration virtueller Hosts stehen.

    echo "$verabschiedung $name";