Page 1 of 1

auth basic geht nach serverumzug nicht mehr

Posted: 28. Jun 2003 16:48
by Verzweifelter
Hallo,

ich hoffe hier weis jemand eine Lösung für mein Problem:

Bin mit meinen Daten von einem auf einen anderen Server umgezogen.
Soweit klappt auch alles, nur geht jetzt das einloggen via auth basic nicht mehr.

In der apache.conf ist für das DocumentRoot folgendes eingetragen
(wie auch schon bei dem alten Server)

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
<Directory />
Options -Indexes
AllowOverride All
Order deny,allow
Allow from 192.168.0.
Deny from all
</Directory>
</font><hr></pre></blockquote>

Das folgende php Beispielscript geht auf dem alten, nicht aber dem neuen Server.

<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
<Directory />
Options -Indexes
AllowOverride All
Order deny,allow
Allow from 192.168.0.
Deny from all
</Directory>
</font><hr></pre></blockquote>

Das Loginfenster kommt immer wieder nach Eingabe der Daten.

Kann mir bitte jemand einen Tip geben wo hier der Fehler liegen könnte?

(Apache 1.3.27, mod-php 4.3.2)

Vielen Dank fürs durchlesen

Re: auth basic geht nach serverumzug nicht mehr

Posted: 28. Jun 2003 16:51
by Verzweifelter
Tscghuldigung, hier das Beispielscript:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
<?php
if(!isset($PHP_AUTH_USER)) {
header("WWW-Authenticate: Basic realm=\"My Realm\"");
header('status: 401 Unauthorized');
# Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button
";
exit;
} else {
echo "Hello $PHP_AUTH_USER.<P>";
echo "You entered $PHP_AUTH_PW as your password.<P>";
}
?>

</font><hr></pre></blockquote>

Re: auth basic geht nach serverumzug nicht mehr

Posted: 29. Jun 2003 3:14
by A. Digest
Hi!

> In der apache.conf ist für das DocumentRoot folgendes eingetragen
> (wie auch schon bei dem alten Server)

Also, der Ausschnitt aus der httpd.conf zeigt nicht das DocumentRoot!
Das mit .../htdocs ist das DocumentRoot, das wäre wohl der interessantere Abschnitt. Logisch auch, dasz ein Abschnitt

<Directory /Unterverzeichnis>
...
</Directory>

in seinem Bereich die Einstellungen von

<Directory />
...
</Directory>

überschreibt. Was bei Dir wo ist, muszt Du schon selbst wissen!

AllowOverride All
ist schon mal mehr oder weniger gut, obwohl
AllowOverride AuthConfig
ausreicht.

Da so etwas wie
AuthUserFile /etc/httpd/passwd

nicht zu sehen ist, musz es dann eben in der .htaccess (auch das Ding
darf anders heiszen) im jeweiligen Verzeichnis stehen. Dürftest Du aber
mit den Dokumenten kopiert haben?


Also als Beispiel:

<Directory "/srv/www/htdocs/geschuetzt">
Options Indexes -FollowSymLinks +Includes MultiViews
AllowOverride AuthConfig
Order allow,deny
Allow from all
</Directory>

Dorthin natürlich noch die
/srv/www/htdocs/geschuetzt/.htaccess


Da bei Dir aber eine Login-Aufforderung kommt, funktioniert wohl der Schutz,
es dürfte wohl am Inhalt der .htacccess und/oder Passwort-Datei liegen!

Also .htaccess hier mal zeigen.

Re: auth basic geht nach serverumzug nicht mehr

Posted: 29. Jun 2003 9:36
by Verzweifelter
Hallo,

ok, bei dem Directory hab ich den Pfad zum DocRoot ergänzt.

Eine .htaccess und passwd Datei habe ich nicht.

Der Apache soll mich immer reinlassen, egal welche user/pass Kombination ich da auch eingebe.
Den vergleich ob berechtigt oder nicht machen dann die php scripte.
(siehe mein zweites Posting hier)

Diese Script funktioniert tadellos auf meinem alten Server.

Re: auth basic geht nach serverumzug nicht mehr

Posted: 29. Jun 2003 22:55
by A. Digest
> Eine .htaccess und passwd Datei habe ich nicht.

Ohne .htaccess mag ja noch sein, das kann man auch in die httpd.conf schreiben, aber ohne passwd-Datei? Irgendwo müssen doch die User/Password Kombinationen stehen. PHP greift letzlich auf apache-auth zurück, um fest zu stellen, welcher User da gerade dran ist ...

Vielleicht weiß jemand mehr.

Re: auth basic geht nach serverumzug nicht mehr

Posted: 30. Jun 2003 10:47
by Verzweifelter
Es ist mir ja gerade wichtig daß die Überprüfung User/Pass innerhalb von php geschiet, damit man über ein Webinterface dann einfach Nutzer hinzufügen kann.

Diese Script geht auf dem alten Server.

Gruß

Re: auth basic geht nach serverumzug nicht mehr

Posted: 06. Jul 2003 0:36
by A. Digest
Alles klar!

Hat nichts mit Apache zu tun, auszer, dasz dieser die Parameter per Umgebungsvariablen weiterreicht. Neuere PHP-Konfigurationen machen Umgebungsvarablen (und GET/POST-Parameter) nicht mehr automatisch zu globalen (PHP-)Variablen (php.ini: register_globals = Off; korrekt: Sicherheitsrisiko, zumindest GET/POST). Für GET/POST ist der Zugriff mittels der hashs $HTTP_GET_VARS[<!--no--> 'EinFormFeld' <!--no-->] und $HTTP_POST_VARS[<!--no--> 'EinFormFeld' <!--no-->] möglich. In Deinem Fall
hilft allerdings auch nicht getenv(), es ist (wie immer) etwas verzwickter:

<pre>
if( ! isset( $_SERVER[ 'PHP_AUTH_USER' ] ) )
{
header("WWW-Authenticate: Basic realm=\"Test-PHP-Basic\"");
Header("HTTP/1.0 401 Unauthorized");
echo "<h3>Text to send if user hits Cancel button</h3>\<!--no-->n";
exit;
}
else
{
echo "Hello " . $_SERVER['PHP_AUTH_USER'] . ".<P>";
echo "You entered " . $_SERVER['PHP_AUTH_PW'] . " as your password.<P>";
}
?>
</pre>

Das 'ServerEnvironment' $_SERVER[<!--no--><!--no-->].

Also: `register_globals = Off' lassen, und statt dessen mit folgenden 4(5) Arten zugreifen:

<pre>
$HTTP_GET_VARS[ 'EinFormFeld' ]
$HTTP_POST_VARS[ 'EinFormFeld' ]
$_SERVER[ 'PHP_AUTH_USER' ]
$_ENV[ 'LANG' ] oder getenv( 'LANG' )
</pre>

Nach den ersten beiden Varianten würde man ja so etwas wie
$ENV_VARS[<!--no--><!--no-->] bzw. $SERVER_ENV_VARS[<!--no--><!--no-->]
vermuten ...


Ich dachte immer, dasz PHP da irgendeine andere Schnittstelle zur Apache-Authentifizierung hätte (kann ja trotzdem sein). In dem Code-Beispiel wird ja aber eigener (Auth-)Header gesendet. Nur wollte das Beispiel eben den Environmentzugriff über die globalen Variablen $PHP_AUTH_USER, ...

Re: auth basic geht nach serverumzug nicht mehr

Posted: 16. Jul 2003 13:27
by ehemals Verzweifer
DANKE A.Digest!

Das wars.