auth basic geht nach serverumzug nicht mehr

Post Reply
Message
Author
Verzweifelter

auth basic geht nach serverumzug nicht mehr

#1 Post 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

Verzweifelter

Re: auth basic geht nach serverumzug nicht mehr

#2 Post 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>

A. Digest

Re: auth basic geht nach serverumzug nicht mehr

#3 Post 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.

Verzweifelter

Re: auth basic geht nach serverumzug nicht mehr

#4 Post 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.

A. Digest

Re: auth basic geht nach serverumzug nicht mehr

#5 Post 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.

Verzweifelter

Re: auth basic geht nach serverumzug nicht mehr

#6 Post 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ß

A. Digest

Re: auth basic geht nach serverumzug nicht mehr

#7 Post 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, ...

ehemals Verzweifer

Re: auth basic geht nach serverumzug nicht mehr

#8 Post by ehemals Verzweifer »

DANKE A.Digest!

Das wars.

Post Reply