аутентификация через htaccess. CNAME - PullRequest
2 голосов
/ 19 февраля 2020

Мне нужно правило .htaccess, которое не запрашивает пароль при входе с cname: xxx.example.com, но я не могу заставить его работать.

Мой фактический .htaccess файл выглядит как это:

AuthType Basic
AuthName “Entwurf“
AuthUserFile /my/path/to/.htpasswd
Require valid-user
Order deny,allow
Deny from all
Allow from 11.22.33.44
Satisfy any

Я пробовал это:

AuthType Basic
AuthName “Entwurf“
AuthUserFile /my/path/to/.htpasswd
Require valid-user
Order deny,allow
Deny from all
Allow from 11.22.33.44
Allow from xxx.example.com
Satisfy any

Но все равно запрашивает пароль.

Я надеюсь, что кто-то может помочь с этим.

1 Ответ

1 голос
/ 19 февраля 2020

По CNAME кажется, что вы на самом деле ссылаетесь на запрашиваемое имя хоста. (Имя хоста мы собираемся на .)

Таким образом, любой, кто запрашивает xxx.example.com, имеет неограниченный доступ ИЛИ клиент с IP-адресом 11.22.33.44, независимо от имени запрашиваемого хоста ( при условии, что вы обслуживаете несколько имен хостов).

Allow from xxx.example.com

Это проверяет разрешенное имя хоста клиента, выполняющего запрос - это не одно и то же. (Чтобы получить здесь имя хоста, сервер должен выполнить DNS-поиск IP-адреса клиента - это отключено на некоторых общих серверах из-за дополнительных издержек, которые он размещает на сервере). Для большинства пользователей это просто относится к провайдеру, через который они получают доступ к inte rnet.

Кроме того, директивы Order, Deny и Allow являются директивами Apache 2.2. Если вы используете Apache 2.4, то вам, вероятно, следует использовать директивы Require .... Если вы не поддерживаете обратную совместимость с сервером, который все еще использует старые директивы Apache 2.2 (эти два не следует смешивать).

На Apache 2.4 вы можете использовать Apache Выражения ... поэтому используйте HTTP-аутентификацию только в том случае, если IP-адрес клиента не равен 11.22.33.44 и xxx.example.com не запрашиваемый хост.

Например:

<If "%{HTTP_HOST} != 'xxx.example.com' && %{REMOTE_ADDR} != '11.22.33.44'">
    AuthType Basic
    AuthName "Entwurf"
    AuthUserFile /my/path/to/.htpasswd
    Require valid-user
</If>

Вы также используете curly кавычки в директиве AuthName - может быть, это просто проблема с форматированием в вашем вопросе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...