57 votes

Comment configurer l'authentification de base dans les hôtes virtuels Apache httpd ?

J'essaie de configurer l'accès à mercurial en utilisant Apache http. Il nécessite une authentification. Mon /etc/apache2/sites-enabled/mercurial ressemble à ça :

NameVirtualHost *:8080

<VirtualHost *:8080>
    UseCanonicalName Off
    ServerAdmin  webmaster@localhost
    AddHandler cgi-script .cgi
    ScriptAliasMatch ^(.*) /usr/lib/cgi-bin/hgwebdir.cgi/$1
</VirtualHost>

Tous les tutoriels que je lis sur Internet me disent d'insérer ces lignes :

AuthType Basic
AuthUserFile /usr/local/etc/httpd/users

Mais lorsque je le fais, j'obtiens l'erreur suivante :

# /etc/init.d/apache2 reload
Syntax error on line 8 of /etc/apache2/sites-enabled/mercurial:
AuthType not allowed here

Ma distribution est une Ubuntu personnalisée appelée Turnkey Linux Redmine.

85voto

mark91731 Points 11

Vous devez le placer dans une directive Location :

<VirtualHost *:8080>

<Location /> #the / has to be there, otherwise Apache startup fails
            Deny from all
            #Allow from (You may set IP here / to access without password)
            AuthUserFile /usr/local/etc/httpd/users
            AuthName authorization
            AuthType Basic
            Satisfy Any # (or all, if IPs specified and require IP + pass)
                        # any means neither ip nor pass
            require valid-user
</Location>
...
</VirtualHost>

11voto

Josh Points 2369

J'utilise Apache2 sur ubuntu 10.04 - même problème et merci pour la solution. J'ai découvert que je devais placer la configuration dans le fichier /etc/apache2/apache2.conf

Vous pouvez générer le nom d'utilisateur et le mot de passe en utilisant htpasswd. Nouveau fichier :

$ htpasswd -c /srv/auth/.htpasswd squire

Pour ajouter un fichier existant :

$ htpasswd -b /srv/auth/.htpasswd squire2 tickleme2

8voto

Dan Andreatta Points 5352

Vous pouvez protéger un emplacement ou un répertoire. Pour un répertoire, ajoutez quelque chose comme :

<Directory /some/dir/cgi-bin/>
    Options +ExecCGI
    AddHandler cgi-script .cgi
    AuthType Basic
    AuthName 'Private scripts'
    AuthUserFile '/some/other/dir/.htpasswd'
    Require valid-user
</Directory>

Vous pouvez également ajouter Deny y Allow pour un contrôle plus fin.

4voto

Warner Points 23292

Il semblerait que vous spécifiez les paramètres d'authentification dans l'interface de l'utilisateur. VirtualHost . Généralement, ces paramètres sont spécifiés dans le cadre de l'option Directory directive.

Vous pouvez également utiliser .htaccesss mais l'indiquer dans le fichier de configuration d'Apache est une bonne solution par défaut, car elle est moins exposée.

Documentation Apache

3voto

coryb Points 66

J'utilise Apache2 sur ubuntu 10.10. J'ai eu des problèmes avec toutes les solutions ci-dessus, mais celle-ci a bien fonctionné (à partir de la documentation d'Apache) :

<Directory /var/www/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Order allow,deny
  allow from all
  AuthType Basic
  AuthName "Restricted"
  AuthBasicProvider file
  AuthUserFile /etc/users
  Require user visitor
</Directory>

La plus grande différence avec les réponses ci-dessus semble être la directive AuthBasicProvider définie sur "file" et la directive Require incluant le bit "user" avant le nom d'utilisateur réel.

J'espère que cela aidera quelqu'un.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X