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

25

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 l' authentification HTTP simple à tous les sites, en gardant à l'esprit que je ne peux pas configurer cela sur le backend?

Merci,

Lars

Lars Schneider
la source

Réponses:

36

J'ai dû le faire moi-même aujourd'hui (car 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/

nbevans
la source
2
+1 Je voulais juste ajouter que vous pouvez également ajouter les lignes finales dans une frontenddéfinition plutôt que backendsi vous le souhaitez. Et la realm xxxxpièce est facultative.
UpTheCreek
J'ai implémenté cela, mais ce qui se passe, c'est qu'à chaque appel api suivant, j'obtiens le popup demandant une authentification, ce qui le rend inutilisable. Y a-t-il de toute façon où il est demandé une fois puis mis en cache pour le reste des appels? Ce serait très utile.
shshnk
2

Je pense que c'est réellement possible, mais pour l'instant je ne peux trouver qu'un exemple pour vous mettre à 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?

Cher
la source
Bon cri, je suppose que je suis juste habitué maintenant!
Cher
Bien que je le regarde à nouveau, il ne semble pas avoir été mis à jour depuis des mois ... Je n'ai pas vérifié les changements spécifiques entre cela et le mur de texte, mais je suppose qu'il y en a.
Cher
1
Ce «meilleur» lien biblique est 404. Encore mieux serait ce haproxy.org/#docs . Vous y trouverez des goodies manuels HTML / texte.
Glenn Plas
Liens pour accéder aux manuels: cbonte.github.io/haproxy-dconv .
slm