it-swarm.com.de

htaccess funktioniert nicht - immer falsches Passwort

Ich versuche, ein Verzeichnis mit einem Kennwort zu schützen, und ich habe zwei Dateien in dem Verzeichnis, die durch ein Kennwort geschützt werden sollten:

  • .zugang
  • .htpasswd

HTACCESS:

###Contents of .htaccess:
AuthUserFile /var/www/html/path/to/my/directory/.htpasswd
AuthName "Protected Files"
AuthType Basic
Require user admin

HTPASSWD:

###Contents of .htpasswd
admin:oxRHPuqwKiANY

Das Passwort ist auch admin, aber egal welches Passwort ich versuche, es ist immer falsch. Es fragt sofort nach dem Passwort!

Was stimmt nicht mit dieser Konfiguration?

25
testing

Dieses Problem tritt fast immer auf, weil Apache die .htpasswd-Datei nicht lesen kann. Es gibt vier Ursachen, die in den Sinn kommen:

  1. der Pfad wird nicht korrekt analysiert. Wie haben Sie die .htaccess-Datei erstellt? Hat es Unix-Zeilenenden (im Vergleich zu Notepad unter Windows?)

  2. ist der Pfad korrekt? Was zeigt der folgende Befehl (mit dem Pfad-Update)? Ls -l /var/www/html/path/to/my/directory/.htpasswd

  3. hat der Webserver Zugriff auf die Datei? chmod 644 und sehen, ob das das Problem löst.

  4. die .htpasswd-Datei kann nicht analysiert werden. In diesem Fall verwenden Sie die Verschlüsselung crypt (). Es scheint also, als hätten Sie die Datei unter Linux erstellt und es ist wahrscheinlich in Ordnung. Einige Verschlüsselungstypen funktionieren nur auf bestimmten Plattformen, wenn Sie im Zweifelsfall zu MD5 wechseln möchten.

Möglicherweise finden Sie hilfreiche Meldungen im Apache-Fehlerprotokoll.

Mein Geld ist auf # 3.

27
Mike

Ich hatte ein ähnliches Problem mit MAMP und es war, weil ich .htpasswd von Hand erstellt hatte. Die Lösung bestand darin, den Befehl htpasswd im Terminal zu verwenden:

htpasswd -bc .htpasswd someuser somepass

dadurch wurde die .htpasswd-Datei erstellt, die gut mit meiner .htaccess-Datei funktionierte, die so aussah:

AuthType Basic
AuthName "This site is in alpha and requires a password."
AuthUserFile "/Applications/MAMP/htdocs/mywebsite/.htpasswd"
require valid-user
16
sidarcy

Es besteht eine geringe Chance, dass Sie den Kennwortschutz in einem übergeordneten Ordner sehen, nicht in dem Ordner, den Sie erwarten.

Wenn sich in Ihrem/etc/Apache2/sites-fähigen Ordner nur eine Datei befindet, prüfen Sie, ob es einen Abschnitt für Ihren Site-Ordner gibt.

<Directory /var/www/mysite.com>
   AllowOverride All
</Directory> 

andernfalls, wenn es eine Datei für Ihren Site-Namen gibt, wie:

/etc/Apache/sites-enabled/YOUR_SITE_NAME_HERE.conf

bearbeiten Sie diese Datei stattdessen und stellen Sie sicher, dass eine 

AllowOverride All

da drin. Das ist der wichtige Teil! Wenn Sie nur das Minimum zulassen möchten, geben Sie Folgendes an:

AllowOverride AuthConfig

stattdessen.

5
Brad Parks

Ich hatte das gleiche Problem. Das Problem war folgende Zeile:

Benötigen Sie den Benutzer admin

Wenn Sie admin angeben, können Sie nur mit admin auf das Verzeichnis zugreifen, auch wenn sich andere Benutzer in der .htpasswd-Datei befinden. 

Wenn Sie die Benutzer in der Datei .htpasswd angeben möchten, können Sie die Zeile wie folgt ändern:

Erlaube einen gültigen Benutzer

2
Betty

Mein Problem war, dass ich keinen absoluten Pfad für die AuthFile-Zeile angegeben habe.

1
Dakusan

Ich hatte das gleiche Problem.

  • Das Passwort sollte angegeben Verschlüsselung haben:

CRYPT_STD_DES - Standard-DES-basierter Hash mit einem aus zwei Buchstaben bestehenden Salt aus dem Alphabet "./0-9A-Za-z".

function standard_salt(){
$a = array_merge(range(0,9),range('a','z'),range('A','Z'));
return (string) $a[Rand(0,count($a)-1)].$a[Rand(0,count($a)-1)];
}

echo(crypt("admin",standard_salt()));

beispiel:

admin:dsbU.we73eauE

Onlione Javascript Encripter ist ebenfalls verfügbar.

Wenn es immer noch nicht funktioniert, kümmern Sie sich um diese:

  • verwenden Sie Unix-Zeilenumbrüche
  • verwenden Sie den korrekten AuthUserFile-Pfad. Sie können ihn mit folgendem Befehl erhalten: echo $_SERVER['DOCUMENT_ROOT'];
  • datei lesbar: chmod(".htpasswd",0644);
0
user669677

Ich habe ungefähr 2 Stunden gebraucht, um das gleiche Problem zu lösen. Aber das Problem war in nginx . Ich habe nginx als Front-Webserver und es gab eine Zeile für die Proxy-Konfiguration:

proxy_set_header Berechtigung "";

Es überschreibt das Feld für die Autorisierung, und Apache erhält kein Login und kein Kennwort.

Ich habe diese Zeile gerade kommentiert und es hat funktioniert.

0
Oleg

Stellen Sie außerdem sicher, dass Ihre Kennwortdatei ANSI-kodiert ist.

0
tkotisis