htaccess ne fonctionne pas toujours mauvais mot de passe

j'essaie de protéger par mot de passe un répertoire, et j'ai deux fichiers dans le répertoire qui devraient le protéger par mot de passe:

  • .htaccess
  • .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

le mot de passe est aussi admin, mais quel que soit le mot de passe que j'essaie, il est toujours erroné. Il demande immédiatement le mot de passe à nouveau!

Qu'est-ce qui ne va pas avec cette configuration?

24
demandé sur HelpNeeder 2012-04-04 20:11:01

8 réponses

ce problème est presque toujours dû au fait qu'apache ne peut pas lire le .un fichier htpasswd. Il y a quatre causes qui viennent à l'esprit:

  1. il n'analyse pas le chemin correctement... comment avez-vous créé le .fichier htaccess? Est-ce qu'il a des fins de ligne unix (par opposition à say en utilisant Notepad dans Windows)?

  2. le chemin est-il correct? Que montre la commande suivante (avec le path update)? ls-l /var/www/html/chemin/vers/mon/répertoire/.htpasswd

  3. le serveur web avoir accès au dossier? chmod 644 et voir si cela résout le problème.

  4. il ne peut pas l'analyser .fichier htpasswd: dans ce cas, vous utilisez le cryptage crypt() donc il semble que vous avez créé le fichier sur Linux et il est probablement très bien. Certains types de cryptage ne fonctionnent que sur certaines plateformes, en cas de doute, essayez de passer à MD5.

Vous pouvez trouver messages utiles dans le journal des erreurs Apache.

Mon argent est sur la #3.

26
répondu Mike 2012-04-05 07:14:17

j'ai eu un problème similaire en utilisant MAMP et c'était parce que je créais .htpasswd par la main. La Solution était d'utiliser htpasswd commande dans le terminal:

htpasswd -bc .htpasswd someuser somepass

cela a créé l' .htpasswd fichier qui a bien fonctionné avec mon .fichier htaccess qui ressemblait à de la sorte:

AuthType Basic
AuthName "This site is in alpha and requires a password."
AuthUserFile "/Applications/MAMP/htdocs/mywebsite/.htpasswd"
require valid-user
15
répondu sidarcy 2018-06-08 21:52:57

il y a une petite chance que vous voyez la protection de mot de passe d'un dossier parent, pas le dossier que vous attendez.

si votre dossier/etc/apache2 / sites-enabled ne contient qu'un seul fichier, vérifiez s'il contient une section pour votre dossier sites, quelque chose comme:

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

sinon, s'il y a un fichier pour le nom de votre site, comme:

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

éditez ce fichier à la place, et assurez-vous qu'il y a un

AllowOverride All

là. C'est l' partie importante! Si vous voulez seulement de permettre au minimum, préciser:

AllowOverride AuthConfig

à la place.

5
répondu Brad Parks 2017-10-02 00:34:00

j'ai eu le même problème. Il s'est avéré que le problème était cette ligne:

Besoin de l'utilisateur admin

Si vous spécifiez admin vous ne pouvez accéder à l'annuaire admin même si vous avez d'autres utilisateurs dans le .htpasswd fichier.

Si vous souhaitez spécifier les utilisateurs dans le .htpasswd le fichier, vous pouvez modifier la ligne:

Require valid-user

2
répondu Betty 2015-07-07 08:05:20

mon problème est que je n'ai pas donné un chemin absolu pour la ligne AuthFile.

1
répondu Dakusan 2016-06-17 23:48:42

j'ai eu le même problème.

  • Le mot de passe doit contenir indiqué de cryptage:

CRYPT_STD_DES - DES Standard de hachage avec un salt de deux caractères de l'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()));

exemple:

admin:dsbU.we73eauE

onlione javascript encripter est également disponible.

Si ça ne fonctionne toujours pas, prenez soin de ces éléments:

  • utiliser unix mais les sauts de ligne
  • utiliser le chemin AuthUserFile correct, vous pouvez l'obtenir en utilisant:echo $_SERVER['DOCUMENT_ROOT'];
  • définir fichier lisible: chmod(".htpasswd",0644);
0
répondu 2013-04-15 12:17:06

assurez-vous également que votre fichier mot de passe est encodé ANSI.

0
répondu tkotisis 2013-10-05 15:35:27

j'ai passé environ 2 heures pour résoudre le même problème. Mais le problème était à nginx. J'ai nginx en tant que front de du serveur web et il y avait une ligne pour la configuration de proxy:

proxy_set_header Autorisation "";

il l'emporte sur le champ D'autorisation et apache ne reçoit pas de login ni de mot de passe.

je viens de commenter cette ligne et ça a marché.

0
répondu Oleg 2015-10-14 07:55:13