web-dev-qa-db-fra.com

Possible d'ajouter une authentification d'accès HTTP de base via HAProxy?

J'ai réussi à installer HAProxy devant un serveur HTTP sur lequel je n'ai aucun contrôle .

Est-il possible de configurer HAProxy pour ajouter Authentification HTTP simple à tous les sites, sachant que je ne peux pas configurer cela sur le backend?

Merci,

Lars

25
Lars Schneider

J'ai dû le faire moi-même aujourd'hui (parce que IIS 7.5 ne supporte bizarrement pas l'authentification contre autre chose que les comptes d'utilisateurs Windows ou AD!) ...

Voici tout le code

userlist UsersFor_AcmeCorp
  user joebloggs insecure-password letmein

backend HttpServers
  .. normal backend stuff goes here as usual ..
  acl AuthOkay_AcmeCorp http_auth(UsersFor_AcmeCorp)
  http-request auth realm AcmeCorp if !AuthOkay_AcmeCorp

Je l'ai documenté un peu mieux ici: http://nbevans.wordpress.com/2011/03/03/cultural-learnings-of-ha-proxy-for-make-benefit/

36
nbevans

Je pense que c'est réellement possible, mais pour le moment je ne trouve qu'un exemple pour vous aider à mi-chemin ...

http://haproxy.1wt.eu/download/1.4/doc/configuration.txt est votre bible.

Consultez la section 3.4 (Listes d'utilisateurs)

Il commence:

Il est possible de contrôler l'accès aux sections frontend/backend/listen ou aux statistiques http en n'autorisant que les utilisateurs authentifiés et autorisés. Pour ce faire, il est nécessaire de créer au moins une liste d'utilisateurs et de définir des utilisateurs.

Cette section explique comment configurer une liste d'utilisateurs. L'exemple de cette section est assez exhaustif, alors copiez-le si vous en avez besoin.

Ensuite, il faut trouver comment l'appliquer ... Je pense que la réponse se trouve dans la section 7.5.3 (Correspondance au niveau 7)

Je pense que cela pourrait être aussi simple que d'utiliser ce qui suit dans un acl:

http_auth(userlist)
http_auth_group(userlist) <group> [<group>]*
  Returns true when authentication data received from the client matches
  username & password stored on the userlist. It is also possible to
  use http_auth_group to check if the user is assigned to at least one
  of specified groups.

Encore une fois, je ne l'ai pas testé, mais c'est ce que j'ai lu la documentation comme suggérant que c'est possible.

J'espère que c'est suffisant pour vous lancer?

2
Pricey

Si vous cherchez à le faire dans le but d'authentifier un

option httpchk

config, cette solution plus simple fonctionne: https://stackoverflow.com/questions/13325882/haproxy-solr-healthcheck-with-authentication

1
Dan Richelson