Username:passwort per header weiterleiten
-
wolfgangnms
- Posts: 4
- Joined: 2003-05-04 18:28
- Location: Schleswig-Holstein
- Contact:
Username:passwort per header weiterleiten
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
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
Re: Username:passwort per header weiterleiten
Du mußt den Usernamen und Passwort base64 verschlüsseln (mit Doppelpunkt getrennt) und als "Authorization" übergeben, also z. B.
[TOM]
Code: Select all
Authorization: Basic ZnJlZDp0aGF0cyBtZQ==-
wolfgangnms
- Posts: 4
- Joined: 2003-05-04 18:28
- Location: Schleswig-Holstein
- Contact:
Re: Username:passwort per header weiterleiten
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
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
Re: Username:passwort per header weiterleiten
Was [TOM] meint ist, dass du folgendes machen sollst:
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
)
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;
(Falls ich Fehler im Code habe, dann bitte berichtigen
Re: Username:passwort per header weiterleiten
Danke, kahler. ;-)kahler wrote:Was [TOM] meint ist, dass du folgendes machen sollst:
[TOM]
Re: Username:passwort per header weiterleiten
Jederzeit wieder :-D[TOM] wrote:Danke, kahler. ;-)
-
wolfgangnms
- Posts: 4
- Joined: 2003-05-04 18:28
- Location: Schleswig-Holstein
- Contact:
Re: Username:passwort per header weiterleiten
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
Wolfgang
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
Wolfgang
Re: Username:passwort per header weiterleiten
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. ;-)wolfgangnms wrote: habe das zu viele Semikolon in der ersten header-zeile entfernt, und siehe da -
er will von mir Username und Passwort haben.
[TOM]
-
wolfgangnms
- Posts: 4
- Joined: 2003-05-04 18:28
- Location: Schleswig-Holstein
- Contact:
Re: Username:passwort per header weiterleiten
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
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
Re: Username:passwort per header weiterleiten
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.
Wenn du die .htaccess entfernst, tut dieser das logischerweise nicht mehr.
Re: Username:passwort per header weiterleiten
wolfgangnms wrote:habe das zu viele Semikolon in der ersten header-zeile entfernt
Naja, ich gehe Mal davon aus, dass jemand, der PHP programmiert so kleine Fehlerchen selbst ausmärtzen kann...[TOM] wrote:Und hast du auch das Fehlende in der 2. Headerzeile hinzugefügt?
...Passiert halt beim runterschreiben und das Board hat ja keinen integrierten Debugger (wieso eigentlich nicht??