Username:passwort per header weiterleiten

Bash, Shell, PHP, Python, Perl, CGI
wolfgangnms
Posts: 4
Joined: 2003-05-04 18:28
Location: Schleswig-Holstein

Username:passwort per header weiterleiten

Post by wolfgangnms »

Hallo,
ich habe einen geschützten Bereich, in dem der User nur gelangen soll, wenn bestimmte Bedingungen erfüllt sind. Dazu wird mittels eines PHP-Scriptes eine zufällige Kombination Username/Passwort (crypt-verschlüsselt) in eine .htpasswd geschrieben. Anschliessend soll auf den geschützten Bereich mittels HEADER weitergeleitet werden.

fputs($output,"$userName:$passwordEncrypted:$timeStamp:$timeKlarn");
fclose($output);
$urlRedirect = $urlProtected;
$urlRedirect = str_replace("http://","http://$userName:$passwordKlartext@",$urlRedirect);
sleep(2);
header("Location: $urlRedirectnn");
exit;

Leider klappt das nicht so, wie es soll; es erscheint immer die Abfrage nach Username und Passwort. Wenn ich aber vor der Zeile header("location..... folgendes eingebe,

print $urlRedirect;
exit;

wird mir logischerweise die komplette URL incl. Usernamen und Passwort ausgegeben. Wenn ich diese per copy/paste in die Adressleiste einfüge, klappt der Zugang reibungslos. Ich habe einen root-server von 1&1, suse8.2, confixx pro, den neuesten Apachen, und hauptsächlich keine Ahnung :?
Gruss
Wolfgang
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: Username:passwort per header weiterleiten

Post by [tom] »

Du mußt den Usernamen und Passwort base64 verschlüsseln (mit Doppelpunkt getrennt) und als "Authorization" übergeben, also z. B.

Code: Select all

Authorization: Basic ZnJlZDp0aGF0cyBtZQ==
[TOM]
wolfgangnms
Posts: 4
Joined: 2003-05-04 18:28
Location: Schleswig-Holstein

Re: Username:passwort per header weiterleiten

Post by wolfgangnms »

Hi Tom,
ich verstehe leider nicht ganz, was Du meinst.
Der eigentliche Vorgang funzt ja, wenn ich z.B.
http://username:passwort@meinedomain.de ( = $urlRedirect) eingebe.
Nur, wenn ich vom Script aus über header("Location: $urlRedirectnn");
weiterleite, kommt eine Passwortabfrage. Wenn ich dann die zuvor erzeugten Daten eingebe, klappt es auch wieder.

Wolfgang
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: Username:passwort per header weiterleiten

Post by kahler »

Was [TOM] meint ist, dass du folgendes machen sollst:

Code: Select all

fputs($output,$userName.":".$passwordEncrypted.":".$timeStamp.":".$timeKlar."n"); 
fclose($output); 
$urlRedirect = $urlProtected; 
sleep(2); 
header ("Location: ".$urlRedirect."n";); 
header ("Authorization: Basic ".base64_encode ($userName.":".$passwordKlartext))
exit; 
Dein Browser übernimmt die Logindaten von sich aus in den Header und macht die Base64 Encodierung, aber da du ja quasie den Browser nachbauen musst, musst du das selbst machen.

(Falls ich Fehler im Code habe, dann bitte berichtigen :wink: )
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: Username:passwort per header weiterleiten

Post by [tom] »

kahler wrote:Was [TOM] meint ist, dass du folgendes machen sollst:
Danke, kahler. ;-)

[TOM]
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: Username:passwort per header weiterleiten

Post by kahler »

[TOM] wrote:Danke, kahler. ;-)
Jederzeit wieder :-D
wolfgangnms
Posts: 4
Joined: 2003-05-04 18:28
Location: Schleswig-Holstein

Re: Username:passwort per header weiterleiten

Post by wolfgangnms »

Hi kahler,
habe das zu viele Semikolon in der ersten header-zeile entfernt, und siehe da -
er will von mir Username und Passwort haben.
Leider wars das nicht :cry:

Wolfgang
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: Username:passwort per header weiterleiten

Post by [tom] »

wolfgangnms wrote: habe das zu viele Semikolon in der ersten header-zeile entfernt, und siehe da -
er will von mir Username und Passwort haben.
Und hast du auch das Fehlende in der 2. Headerzeile hinzugefügt? Und nimm mal das "n" aus der 1. Zeile raus. Das stört. ;-)

[TOM]
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: Username:passwort per header weiterleiten

Post by [tom] »

BTW: Mit getallheaders() kannst du prüfen, was auf der anderen Seite ankommt.

[TOM]
wolfgangnms
Posts: 4
Joined: 2003-05-04 18:28
Location: Schleswig-Holstein

Re: Username:passwort per header weiterleiten

Post by wolfgangnms »

hallo,
ich hatte auch das fehlende Semikolon gesetzt. War's aber nicht.
Ich habe dann mal die .htaccess entfernt, und folgendes script aufrufen lassen:
<?php
$headers= getallheaders();
while (list ($header, $value) = each ($headers)) {
echo "$header: $value<br>n";
}
?>

Danach bekam ich folgendes:
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Encoding: gzip, deflate
Accept-Language: de
Cache-Control: no-cache
Connection: Keep-Alive
Host: http://www.meinedomain.de
Referer: http://www.meinedomain.de/ueber18.htm
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

aber keine Aussage über username/passwort;
auch nicht, wenn ich das script direkt aufrufe:
http://name:pass@www.meinedomain.de/roo ... header.php

Wolfgang
impulz
Posts: 22
Joined: 2002-10-22 17:08
Location: Paderborn

Re: Username:passwort per header weiterleiten

Post by impulz »

Der Browser schickt die User-Informationen sinnvollerweise nur, wenn der Webserver sie ueber ein Authorisation Required anfordert.
Wenn du die .htaccess entfernst, tut dieser das logischerweise nicht mehr.
kahler
Posts: 130
Joined: 2003-04-18 17:42
Location: /root

Re: Username:passwort per header weiterleiten

Post by kahler »

wolfgangnms wrote:habe das zu viele Semikolon in der ersten header-zeile entfernt
[TOM] wrote:Und hast du auch das Fehlende in der 2. Headerzeile hinzugefügt?
Naja, ich gehe Mal davon aus, dass jemand, der PHP programmiert so kleine Fehlerchen selbst ausmärtzen kann...

...Passiert halt beim runterschreiben und das Board hat ja keinen integrierten Debugger (wieso eigentlich nicht?? :wink: )