Это помогло мне понять, как не аутентифицировать некоторых пользователей (согласно IP):
<Directory /var/www/files/> Order deny,allow Deny from all Allow from 192.168.1.2 Satisfy Any AuthUserFile /etc/apache2/basic.pwd AuthName "Please enter username and password" AuthType Basic Require valid-user </Directory>
Представьте, что у меня есть эта БД (отличается от БД, используемой для аутентификации):
User IP Mark 192.168.1.2 Mike 192.168.1.3 Karl 192.168.1.4
1- могу ли я разрешить все IP-адреса, хранящиеся в БД, используя конфигурацию в Apache?
2- другая проблема заключается в том, что авторизация разрешенного IP потеряна, может ли Apache использовать эту БД для авторизации, если пользователю разрешено получать страницы без аутентификации?
Обновить:
быть понятным:
1- Я не хочу статического решения, я хочу, чтобы Apache разрешил все IP-адреса из указанной таблицы в БД (БД динамически меняется).
2- Мы знаем, что когда Apache аутентифицирует пользователей, он знает имя пользователя из учетных данных аутентификации, но при разрешении имя пользователя будет потеряно, я хочу, чтобы Apache извлек имя пользователя из IP-адреса, разрешенного им, из той же таблицы, которую он извлекает. Айпи адрес?
Я не следую "имя пользователя будет потеряно". Вы можете объяснить? Кроме того, обычной практикой является создание этих файлов конфигурации динамически в подобном случае. Не можете ли вы создать эту директиву при обновлении БД?
Charlie Schliesser 9 лет назад
0
«имя пользователя будет потеряно» означает, что Apache может следить за пользователями так же, как и при использовании информации аутентификации, «вы не можете создать эту директиву при обновлении БД?» это будет очень плохо влиять на производительность (перезапуск `httpd` после каждого изменения в БД). плюс моя БД сильно меняется @ CharlieS
Networker 9 лет назад
0
Не перезагружайте его, просто перезагрузите конф.
Charlie Schliesser 9 лет назад
0
«перезагрузка» не достаточно хороша, это не очень хорошее решение
Networker 9 лет назад
0
Ответ на http://stackoverflow.com/a/4677061/630614 может решить часть этого. Но если вы хотите использовать Auth, это может потребовать другой привязки или перезагрузки конфигурации (что не вредит работе пользовательских сеансов).
Charlie Schliesser 9 лет назад
0
@CharlieS, спасибо, это может помочь, как насчет второй проблемы.
Networker 9 лет назад
0
Сделайте еще немного поиска :) http://httpd.apache.org/docs/2.2/mod/mod_authn_dbd.html
Charlie Schliesser 9 лет назад
0
эта страница полезна для аутентификации пользователей, чтобы не авторизовать его
Networker 9 лет назад
0
2 ответа на вопрос
1
Tyson
In answer to #1 you can have as many IP's allowed as you want... examples:
Allow from 192.168.1.2 Allow from 192.168.1.3 Allow from 192.168.1.4
or even
Allow from 192.168.1.2 192.168.1.3 192.168.1.4
and many others including ranges.
for #2, sorry but I'm not understanding what you're asking, perhaps an example?
Я не хочу статического решения, я хочу, чтобы Apache разрешил все IP-адреса из упомянутой таблицы в БД, см. Обновления
Networker 9 лет назад
0
@ Networker Я задержал еще один ответ, пока у меня не было возможности просматривать документы Apache. Я не уверен, что полезно предоставлять «пользователя» для доступа, предоставляемого IP. За исключением того, что это имя используется для поиска в файле .htpasswd, я не вижу способа получить значение, которое использовалось из другого приложения. Аутентификация Httpclient также не очень хорошая безопасность, пароли отправляются на сервер в виде открытого текста. Если вам нужны пользовательские входы в систему для приложения, используйте более сложную систему в этом приложении. Для чего хорош httpclient Auth - это держать поисковых роботов, любопытных пользователей и т. Д. Вне сайта разработки или тестирования.
Tyson 9 лет назад
1
@Networker Тем не менее ... У вас может быть задание cron, которое запрашивает базу данных и повторно генерирует файл .htaccess каждые X минут, чтобы справиться с необходимостью обновления авторизованных IP-адресов.
Tyson 9 лет назад
0
1
Charlie Schliesser
Вы можете попробовать ответ, предложенный здесь для использования mod_rewriteв черный список из файла:
Вы можете попытаться использовать что-то динамическое, например mod_authn_dbd, чтобы выбрать имя пользователя и пароль из базы данных:
# mod_dbd configuration DBDriver pgsql DBDParams "dbname=apacheauth user=apache password=xxxxxx" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300 <Directory /usr/www/myhost/private> # core authentication and mod_auth_basic configuration # for mod_authn_dbd AuthType Basic AuthName "My Server" AuthBasicProvider dbd # core authorization configuration Require valid-user # mod_authn_dbd SQL query to authenticate a user AuthDBDUserPWQuery \ "SELECT password FROM authn WHERE user = %s" </Directory>
+1, потому что это имеет смысл, но не решает мою вторую проблему
Networker 9 лет назад
0
Извините, но я перечитываю вторую проблему и не понимаю, о чем вы спрашиваете. Что вы подразумеваете под «пользователь потерян», «аутентифицируется, но не авторизуется»?
Charlie Schliesser 9 лет назад
0
аутентификация: кто вы, авторизация: что вы можете сделать? поэтому я хочу, чтобы пользователи, которые не проходили аутентификацию, авторизовались по IP или БД
Networker 9 лет назад
0
Я лично реализовал бы это на уровне приложений, поскольку это стало бы более легко переносимым и тестируемым.
Charlie Schliesser 9 лет назад
1