Apache2 - авторизовать пользователей для местоположения с использованием BasicAuth, но ТОЛЬКО для пользователей за пределами локальной подсети - PullRequest
1 голос
/ 24 февраля 2009

В моем конфиге Apache 2 у меня есть VirtualHost, который выглядит примерно так:

<VirtualHost *:80>
  ServerName sub.domain.com

  # username:password sent on to endpoint
  RequestHeader set Authorization "Basic dXNlcm5hbWU6cGFzc3dvcmQ=="

  ProxyPass        /xyz http://192.168.1.253:8080/endpoint
  ProxyPassReverse /xyz http://192.168.1.253:8080/endpoint

  <Location /xyz>
    # This needs to let users through under the following circumstances
    #   * They are in 192.168.1.0/24
    #   * They have a valid user in a htpasswd file

    # So what goes here?
  </Location>
</VirtualHost>

Я использую виртуальный хост в качестве обратного прокси-сервера для другого сервера (который я назову конечной точкой) в сети.

Я пытаюсь определить конфигурацию, которая позволила бы пользователям внутри сети, просматривающим sub.domain.com, автоматически обслуживать конечную точку. Однако пользователям за пределами сети следует запрашивать учетные данные

Конечной точке требуется пароль, который я скрыл с помощью RequestHeader (который я хочу). Для внешних пользователей пароль должен быть РАЗЛИЧНЫМ и должен быть BasicAuth, получая свой список пользователей из файла htpasswd.

Ответы [ 3 ]

6 голосов
/ 24 февраля 2009
<Location /xyz>
  # This needs to let users through under the following circumstances
  #   * They are in 192.168.1.0/24
  #   * They have a valid user in a htpasswd file

Прямо из http://httpd.apache.org/docs/2.2/mod/core.html#satisfy:

  Require valid-user
  Order allow,deny
  Allow from 192.168.1
  Satisfy any

Конечно, вам также необходимо включить ваш AuthUserFile или любые другие директивы

  AuthType basic
  AuthName "yadayadayada"
  AuthUserFile /foo/bar/blah/.htpasswd
</Location>
0 голосов
/ 24 февраля 2009

Я думаю, что Дэвид довольно хорошо рассмотрел конфигурацию Apache2, но также распространено использование раздельного DNS для предоставления различных услуг вашим внутренним и внешним пользователям. У ваших внутренних пользователей нет никаких оснований делать запрос от вашего прокси, поскольку они (якобы) имеют прямой доступ к «конечной точке».

Существуют случаи, когда вы можете фактически повлечь задержки маршрутизации и перегрузку, если ваши внутренние пользователи подключаются к одному из ваших публичных IP-адресов. Первоначально я был поклонником наличия отдельного оборудования для двух DNS-серверов, но недавно перешел на использование привязки «представления» для предоставления разных зон моим классам двух пользователей.

0 голосов
/ 24 февраля 2009

Вы можете создать два vhosts, один из которых будет прослушивать внешний интерфейс, а другой - локальный. Настройки аутентификации будут прежними.

...