Можливо додати базову автентифікацію доступу до HTTP через HAProxy?


25

Я успішно налаштував HAProxy перед сервером HTTP, над яким я не маю ніякого контролю .

Чи можна налаштувати HAProxy, щоб додати просту аутентифікацію HTTP на всі сайти, маючи на увазі, що я не можу налаштувати це на бекенді?

Спасибі,

Ларс

Відповіді:


36

Мені довелося це робити сьогодні самостійно (адже IIS 7.5 химерно насправді не підтримує автентифікацію проти нічого, крім акаунтів користувачів Windows або AD!) ...

Ось весь код

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

Я трохи задокументував це тут: http://nbevans.wordpress.com/2011/03/03/cultural-learnings-of-ha-proxy-for-make-benefit/


2
+1 Просто хотів додати, що ви також можете додавати фінальні рядки у frontendвизначенні, а не backendякщо хочете. А realm xxxxчастина необов’язкова.
UpTheCreek

Я реалізував це, але, що трапляється, це те, що при кожному наступному дзвінку api я отримую спливаюче вікно з проханням про автентифікацію. Це робить його непридатним. Чи є в будь-якому випадку, де його запитують один раз, а потім кешують решту дзвінків? Це було б дуже корисно.
шшнк

2

Я думаю, що це насправді можливо, але зараз я можу лише знайти приклад, щоб отримати вас на півдорозі ...

http://haproxy.1wt.eu/download/1.4/doc/configuration.txt - це ваша біблія.

Перевірте розділ 3.4 (Списки користувачів)

Це починається:

Можна контролювати доступ до секцій frontend / backkend / прослуховування або до http-статистики, дозволяючи лише автентифікованим та авторизованим користувачам. Для цього потрібно створити хоча б один список користувачів та визначити користувачів.

У цьому розділі пояснюється, як створити список користувачів. Приклад у цьому розділі досить вичерпний, тому скопіюйте його, якщо вам потрібно.

Далі потрібно з’ясувати, як його застосувати ... Я думаю, що відповідь лежить у розділі 7.5.3 (Збіг на рівні 7)

Я думаю, це може бути так просто, як використовувати наступне в 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.

Знову ж таки, я цього не перевіряв, але саме так я читав документацію, як напрошується.

Я сподіваюся, що цього достатньо, щоб почати?


Гарний крик, я думаю, я просто звик до цього зараз!
Прайс

Хоча, дивлячись на це ще раз, воно, здається, не було оновлено місяцями ... Я не перевіряв конкретні зміни між цим та стінкою тексту, але припускаю, що вони є.
Прайс

1
Це "краще" біблійне посилання - 404'ing. Ще краще було б це haproxy.org/#docs . Там ви знайдете HTML / текстові посібники із смаком.
Glenn Plas

Посилання для отримання інструкцій: cbonte.github.io/haproxy-dconv .
slm

1

Якщо ви хочете зробити це для автентифікації автентичності

option httpchk

config, це простіше рішення працює: /programming/13325882/haproxy-solr-healthcheck-with-authentication


1
Ласкаво просимо до помилки сервера! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
HopelessN00b
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.