Oliver Lehmann: Authorisation Header

Hallo Forum,

irgendwie komme ich nicht weiter. Ich muss echt sagen...die rfc's sind zum k. Ich sitze hier ne Ewigkeit, und irgendwie vermag ich nicht zu erkennen, was fuer einen header genau ich sendnen muss, um mich bei dem webserver zur Benutzung eines .htaccess gexchuetzten Verzeichnisses anzumelden.

header("Authorisation = $loginname:$loginpwd");

Funzt nicht.

Es wuerde mir evtl. auch schon reichen, wenn mir jemand sagen koennte, wie ich abfragen kann, welche header der browser an den server sendet.
Danke schon mal im vorraus, und freundliche Gruesse von
Olli *g*

  1. Hallo,

    wenn du ein per .htaccess geschützes verzeichniss betreten willst, sendet der server an den browser einen 401 worauf der browser den loginwindow bringt.

    Wie bzw was der Browser dann genau zu rücksendet weiß ich nicht.

    Du willst ja bezwecken den loginscreen zu umgehen. du könntest auf die ENV variablen zugreifen. und es darüber versuchen. dh. die betreffenden variablen füllen bevor du auf das verzeichniss zugreifst, bzw in der url mitübergen. keine ahnung ob das funktioniert

    lg
    Ludwig

    1. Hi Ludwig,

      ich will schon das der Webserver vorher prueft ob der User ueberhaupt zum Besuch berechtigt ist. Und dies mittels pwd abfrage. Nur will ich halt nicht das standart abfrage fenster des browsers

      MfG Olli

      1. ich will schon das der Webserver vorher prueft ob der User ueberhaupt zum Besuch berechtigt ist. Und dies mittels pwd abfrage. Nur will ich halt nicht das standart abfrage fenster des browsers

        Der einfachste Weg ist einfach das Passwort und den Username mit der Anfrage mitzusenden:

        http://username:passwort@www.deineseite.de/

        Damit umgehst Du das Fenster
        Viele Gruesse,
        Thomas Hieck

        1. Hi Thomas,

          Das ist aber evil!!! Und, was macht der IE mit gross geschriebenen usernames/PWDs? er wandelt alle imho in kleinbuchstaben um. auserdem will ich den spass nciht oben in der URL Leiste stehen haben. Es geht doch besser. nur weis ich halt noch nicht genau wie. Und, da dachte ich mir ihr koennten mir helfen :-(

          MfG Olli

        2. ich will schon das der Webserver vorher prueft ob der User ueberhaupt zum Besuch berechtigt ist. Und dies mittels pwd abfrage. Nur will ich halt nicht das standart abfrage fenster des browsers

          Der einfachste Weg ist einfach das Passwort und den Username mit der Anfrage mitzusenden:

          http://username:passwort@www.deineseite.de/

          Das ist nicht einfach, sondern schlicht falsch, da per RFC1738 creditentials für HTTP-URLs explizit verboten sind.

  2. nicht zu erkennen, was fuer einen header genau ich sendnen muss, um mich bei dem webserver zur Benutzung eines .htaccess gexchuetzten Verzeichnisses anzumelden.

    header("Authorisation = $loginname:$loginpwd");

    Du musst dem Webserver z.B. folgenden HTTP-Request übermitteln:

    GET /auth/ HTTP/1.1
    Connection: close
    Host: www.host.de:8080
    Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

    Der Authorization-Header ist so aufgebaut (Bei Basic Authentification):

    "Authorization: " "Basic" " " base64($benutzer:$passwort)

    base64 meint Base64-encoded, mit Perl bekommt man das so:

    use MIME::Base64;
    print  MIME::Base64::encode("bjoern:passwort");

    1. Hi Bjoern,

      erstmal ein megamaechtiges Danke! *g*

      Leider habe ich anscheinend ein groesseres Problem als ich annahm. ICh versuche das ganze mittels PHP zu realisieren. doch wenn ich einen GET header versende, kommt folgendr error.log eintrag zustande:

      [Thu May  4 20:39:58 2000] access to /var/httpd/cgi-bin/php failed for p3e9e6eba.dip0.t-ipconnect.de, reason: malformed header from script. Bad header=GET /verz1/verz2/script

      ich nehem mal an, der eintrag ist abgeschnitten.

      folgendes versuchte ich:

      $base64=base64_encode("usr:pwd");
      header("GET /verz1/verz2/script HTTP/1.1\nConnection: close\nHost: www.domain.de\nAuthorization: Basic ".$base64."\n\n");

      setze ich vor /verz1 noch ein "http://www.domain.de" kommt zwar kein 500, aber es komtm nur ein "Content-type: text/html" im browserfenster, mehr nicht. das script an welches er "weiterleiten" soll, erscheint nicht :-(

      Hat evtl. jemand eine Idee? (achso, $base64 enthaellt einen wert, also die fkt. funzt wollt ich damit sagen)

      MfG Olli

      1. Hallo Olli!

        Leider habe ich anscheinend ein groesseres Problem als ich annahm. ICh versuche das ganze mittels PHP zu realisieren. doch wenn ich einen GET header versende, kommt folgendr error.log eintrag zustande:

        [Thu May  4 20:39:58 2000] access to /var/httpd/cgi-bin/php failed for p3e9e6eba.dip0.t-ipconnect.de, reason: malformed header from script. Bad header=GET /verz1/verz2/script

        In welchem Error-Log? Hast Du zwei Webserver und der eine fordert eine geschuetzte Seite vom anderen an? Dieser Log-Eintrag sieht mir eher so aus, wie wenn Du diese Header in den *Output* eines Scriptes schreibst, was natuerlich sinnlos ist, denn was soll denn der Webserver mit der Zeile "GET irgendwas HTTP/1.1" anfangen? Was Bjoern beschrieben hat, ist vielmehr das, was der Client zum Server senden muss, um eine geschuetzte Seite anzufordern.

        So long

        1. Hi Roland,

          ne, nur ein Webserver...

          ok, erklaere ich es so. ein script liegt in einem mit .htaccess geschutztem verz. will ich dieses "per hand" aufrufen. erscheint das standard fenster was dich zur eingabe deiens username udn deines PWD auffordert. nun wollte ich das ganze aber durch ein eigenens formular loesen. formular und script befindne sich auf dem selben webserver. ich dachte mir nun, das ichd as mit hilfe von headern loessen koennte. Doch irgendwie scheint das so nicht zu funzen

          MfG Olli