Don: Environment-Variable REMOTE_USER

Auf einem Apache-Server (1.3.6) wird von einem mit .htaccess geschützten Verzeichnis aus, ein Perl-Script im /cgi-bin/-Directory aufgerufen. Bevor der User also zum Perl-Script kommen kann, muß er sich beim Server angemeldet haben.

Der Versuch die Environment-Variable
$ENV{'REMOTE_USER'} auszulesen, schlägt dann jedoch fehl: Die Variable ist leer.

Hat die REMOTE_USER nur innerhalb der geschützten Verzeichnisse den Anmeldenamen gespeichert?

Laut http://www.teamone.de/selfaktuell/schroepl02.htm#a2 sollten auf dem Apache-Server die cgi-bin Verzeichnisse nicht durch ein Passwort geschützt werden.

Wie kann ich dann an den Namen des Users gelangen?

MfG
Don

  1. Hat die REMOTE_USER nur innerhalb der geschützten Verzeichnisse den Anmeldenamen gespeichert?

    Ja.

    Laut http://www.teamone.de/selfaktuell/schroepl02.htm#a2 sollten auf dem Apache-Server die cgi-bin Verzeichnisse nicht durch ein Passwort geschützt werden.

    "Sollten" ist nicht der richtige Ausdruck. Wir haben es einfach nicht ohne Fehler im Webserver hinbekommen. Wenn Du es schaffst, prima (und dann bitte Lösung posten ... :-).

    Wie kann ich dann an den Namen des Users gelangen?

    An der von Dir zitierten Stelle steht auch der workaround, den wir verwendet hatten: HTML-Seite vorschalten, diese schützen und im CGI-Skripts den HTTP_REFERER prüfen. Wenn dieser die URL der HTML-Seite enthält, dann muß der Besucher durch die Authentifizierung gelaufen sein, und dann ist REMOTE_USER mit Sicherheit gesetzt.

    1. Hat die REMOTE_USER nur innerhalb der geschützten Verzeichnisse den Anmeldenamen gespeichert?

      Ja.

      Wie kann ich dann an den Namen des Users gelangen?

      An der von Dir zitierten Stelle steht auch der workaround, den wir verwendet hatten: HTML-Seite vorschalten, diese schützen und im CGI-Skripts den HTTP_REFERER prüfen. Wenn dieser die URL der HTML-Seite enthält, dann muß der Besucher durch die Authentifizierung gelaufen sein, und dann ist REMOTE_USER mit Sicherheit gesetzt.

      Die REMOTE_USER ist nur innerhalb der geschützten Verzeichnisse gesetzt. Auch, wenn sich der Besucher auf den geschützten Verzeichnissen angemeldet hat. Wenn ich aus dem geschützten Bereich in ein anderes Verzeichnis linke, ist auch die Abfrage der REMOTE_USER durch SSI nicht mehr erfolgreich:

      /pass/.htaccess
      /pass/auth_ok.shtml

      /ungeschuetzt/ssi_abfrage.shtml

      Von der auth_ok.shtml linke ich auf ssi_abfrage.shtml. Dort ist die REMOTE_USER nicht mehr gesetzt.

      Dies müsste dann aber bedeuten, dass ich diese Variable nur in geschützten Verzeichnissen abrufen kann. Und in diesen Verzeichnissen ist dann kein CGI möglich...?

      1. Von der auth_ok.shtml linke ich auf ssi_abfrage.shtml. Dort ist die REMOTE_USER nicht mehr gesetzt.

        Schließt Du das aus meiner unpräzisen Beschreibung (ich meinte natürlich: REMOTE_USER ist nur *ab* dem Besuch eines geschützten Bereichs bis zum Ende der Browsersitzung gesetzt), oder hast Du es ausprobiert? Letzteres wäre dann eine Besonderheit Deines Webservers.
        (Ich weiß nicht mehr genau, welche Apache-Version derjenige verwendet hat, der mich das per E-Mail gefragt und den FAQ-Eintrag ausgelöst hat, aber bei ihm ging es auf diese Weise ...)

        1. Schließt Du das aus meiner unpräzisen Beschreibung (ich meinte natürlich: REMOTE_USER ist nur *ab* dem Besuch eines geschützten Bereichs bis zum Ende der Browsersitzung gesetzt), oder hast Du es ausprobiert? Letzteres wäre dann eine Besonderheit Deines Webservers.
          (Ich weiß nicht mehr genau, welche Apache-Version derjenige verwendet hat, der mich das per E-Mail gefragt und den FAQ-Eintrag ausgelöst hat, aber bei ihm ging es auf diese Weise ...)

          Ich habe es ausprobiert, hoffe aber auf einen Fehler meinerseits oder weiteren Einstellungsmöglichkeiten.

          Ein Beispiel ist unter http://www.kicktip.de/test zu finden.
          User-ID: test
          PW: test

          Server ist (laut SERVER_SOFTWARE) Apache/1.3.6 (Unix)

          Gibt es vielleicht in der .htaccess noch Parameter, die dieses Verhalten des Web-Servers ändert?

          1. Gibt es vielleicht in der .htaccess noch Parameter, die dieses Verhalten des Web-Servers ändert?

            In der .htaccess-Datei gibt es keine Parameter, die es in der zentralen Webserver-Konfiguration nicht auch gibt.
            Und *eigentlich* sollte die Kondination aus .htaccess und cgi-bin tadellos funktionieren (tut sie unter Apache 1.3.2 und Windows NT 4 auch, wie ich hier reproduzieren kann).
            Allerdings gab es mit 1.3.6 unter UNIX Probleme, deren Ursache ich nicht lokalisieren konnte - deshalb der FAQ-workaround.
            Vielleicht ist einfach die 1.3.6 buggy - die Windows-Variante hat jedenfalls einen (offiziell anerkannten) bug mehr als 1.3.2, was der Grund dafür ist, daß ich nicht umsteigen kann ...

        2. Hi!

          [...] Letzteres wäre dann eine Besonderheit Deines Webservers.

          Es waere wohl eher eine Besonderheit des verwendeten Browsers. Soviel ich weiss, speichert der Browser User-ID und Passwort, die fuer eine Domain (oder was auch immer) eingegeben wurden, bis zum Ende der Sitzung, also bis man den Browser beendet. Bis dahin werden die Angaben bei jedem Request an den Webserver mitgesendet. Deshalb soll man ja seinen Browser beenden, nachdem man mal auf so einer Seite war, falls danach ein anderer Benutzer den Arbeitsplatz benutzt (benutzen koennte). Demnach sollte Don vielleicht einfach mal mit einem anderen Browser testen, ob es dann funzt. Garantie gebe ich hierauf aber nicht, bin mir also nicht 100% sicher.

          Calocybe

    2. Problematik kann getestet werden unter http://www.kicktip.de/test

      User-ID: test
      Passwort: test (was auch sonst...)

      Hoffe auf Hilfe...?

    3. An der von Dir zitierten Stelle steht auch der workaround, den wir verwendet hatten: HTML-Seite vorschalten, diese schützen und im CGI-Skripts den HTTP_REFERER prüfen. Wenn dieser die URL der HTML-Seite enthält, dann muß der Besucher durch die Authentifizierung gelaufen sein, und dann ist REMOTE_USER mit Sicherheit gesetzt.

      Das heißt, wenn ich den passenden HTTP_REFERER schicke, brauche ich kein Paßwort?

      CYa
      GONZO