Раздел 6. Руководства, учебные пособия и инструкции RU EN Пункт 49. Аутентификация и авторизация Аутентификация — это любой процесс, с помощью которого вы подтверждаете, что кто-то является тем, за кого он себя выдает. Авторизация — это любой процесс, с помощью которого кому-то разрешается находиться там, где он хочет, или иметь информацию, которую он хочет иметь. Для общего управления доступом см. Руководство по управлению доступом. Связанные модули и директивыСуществует три типа модулей, задействованных в процессе аутентификации и авторизации. Обычно вам нужно будет выбрать хотя бы один модуль из каждой группы.
Кроме этих модулей есть еще
Модуль Вы, вероятно, также захотите взглянуть на руководство по управлению доступом, в котором обсуждаются различные способы управления доступом к вашему серверу. ВведениеЕсли на вашем веб-сайте есть конфиденциальная информация или информация, предназначенная только для небольшой группы людей, методы, описанные в этой статье, помогут вам убедиться, что люди, которые видят эти страницы, — это люди, которых вы хотели видеть. В этой статье рассматривается «стандартный» способ защиты тех частей вашего веб-сайта, которые большинство из вас собирается использовать. Примечание:Если ваши данные действительно нуждаются в безопасности, рассмотрите возможность использования
ПредпосылкиДирективы, обсуждаемые в этой статье, должны находиться либо в файле конфигурации вашего основного сервера (обычно в разделе
Если вы планируете использовать Поскольку мы говорим здесь об аутентификации, вам понадобится Аллововеррайд Аутконфиг Или, если вы просто собираетесь поместить директивы непосредственно в файл конфигурации вашего основного сервера, вам, конечно, потребуется разрешение на запись в этот файл. И вам нужно немного знать о структуре каталогов вашего сервера, чтобы знать, где хранятся некоторые файлы. Это не должно быть ужасно сложно, и я постараюсь прояснить это, когда мы дойдем до этого момента. Вам также необходимо убедиться, что модули
Как это работаетВот основы защиты паролем каталога на вашем сервере. Во-первых, вам нужно создать файл паролей. То, как именно вы это сделаете, будет зависеть от того, какой поставщик аутентификации вы выбрали. Подробнее об этом позже. Для начала мы будем использовать текстовый файл паролей. Этот файл должен быть размещен в месте, недоступном из Интернета. Это делается для того, чтобы люди не могли загрузить файл паролей. Например, если ваши документы обслуживаются Чтобы создать файл, используйте Чтобы создать файл, введите: Если Далее вам нужно настроить сервер для запроса пароля и сообщить серверу, каким пользователям разрешен доступ. Вы можете сделать это либо отредактировав Основной тип авторизации AuthName "Файлы с ограниченным доступом" # (следующая строка не обязательна) Файл AuthBasicProvider AuthUserFile "/usr/local/apache/passwd/пароли" Требовать пользователя rbowen Давайте рассмотрим каждую из этих директив в отдельности. Директива Директива Так, например, после того, как клиент прошел аутентификацию в
В данном случае является Директива Наконец, Впускать более одного человека Если вы хотите допустить более одного человека, вам нужно создать групповой файл, который связывает имена групп со списком пользователей в этой группе. Формат этого файла довольно прост, и вы можете создать его в своем любимом редакторе. Содержимое файла будет выглядеть так: Это просто список членов группы в длинной строке, разделенной пробелами. Чтобы добавить пользователя в уже существующий файл паролей, введите: Вы получите тот же ответ, что и раньше, но он будет добавлен к существующему файлу, а не к созданию нового файла. (Это Теперь вам нужно изменить Основной тип авторизации AuthName "Только по приглашению" # Необязательная строка: Файл AuthBasicProvider AuthUserFile "/usr/local/apache/passwd/пароли" AuthGroupFile "/usr/local/apache/passwd/groups" Требовать группу имя_группы Теперь любой, кто указан в группе Есть еще один способ разрешить нескольким пользователям, менее конкретный. Вместо создания группового файла вы можете просто использовать следующую директиву: Требовать действительного пользователя Использование этого, а не Возможные проблемыИз-за того, что указана обычная проверка подлинности, ваше имя пользователя и пароль необходимо проверять каждый раз, когда вы запрашиваете документ с сервера. Это даже если вы перезагружаете одну и ту же страницу и для каждого изображения на странице (если они взяты из защищенного каталога). Как вы понимаете, это немного замедляет работу. Величина, на которую это замедляет работу, пропорциональна размеру файла паролей, потому что он должен открыть этот файл и пройтись по списку пользователей, пока не дойдет до вашего имени. И он должен делать это каждый раз, когда загружается страница. Следствием этого является то, что существует практический предел тому, сколько пользователей вы можете поместить в один файл паролей. Это ограничение будет варьироваться в зависимости от производительности вашего конкретного сервера, но вы можете ожидать замедления работы, когда количество записей превысит несколько сотен, и, возможно, в это время вы захотите рассмотреть другой метод аутентификации. Альтернативное хранилище паролейПоскольку хранение паролей в текстовых файлах сопряжено с описанными выше проблемами, вы можете хранить свои пароли в другом месте, например в базе данных. Чтобы выбрать файл dbm, а не текстовый файл, например: <Каталог "/www/docs/private"> Имя_аутентификации "Частное" Основной тип авторизации База данных AuthBasicProvider AuthDBMUserFile "/www/passwords/passwd.dbm" Требовать действительного пользователя </Каталог> Доступны другие варианты. Обратитесь к
Использование нескольких провайдеровС введением новой архитектуры аутентификации и авторизации на основе провайдера вы больше не привязаны к одному методу аутентификации или авторизации. На самом деле любое количество поставщиков может быть смешано и подобрано, чтобы предоставить вам именно ту схему, которая соответствует вашим потребностям. В следующем примере используются поставщики аутентификации на основе файлов и LDAP. <Каталог "/www/docs/private"> Имя_аутентификации "Частное" Основной тип авторизации Файл AuthBasicProvider ldap AuthUserFile "/usr/local/apache/passwd/пароли" AuthLDAPURL ldap://ldaphost/o=yourorg Требовать действительного пользователя </Каталог> В этом примере поставщик файлов сначала попытается аутентифицировать пользователя. Если он не может аутентифицировать пользователя, будет вызван поставщик LDAP. Это позволяет расширить область проверки подлинности, если ваша организация реализует более одного типа хранилища проверки подлинности. Другие сценарии аутентификации и авторизации могут включать смешивание одного типа аутентификации с другим типом авторизации. Например, аутентификация по файлу паролей и авторизация по каталогу LDAP. Так же, как могут быть реализованы несколько поставщиков аутентификации, также могут использоваться несколько методов авторизации. В этом примере используется как авторизация группы файлов, так и авторизация группы LDAP. <Каталог "/www/docs/private"> Имя_аутентификации "Частное" Основной тип авторизации Файл AuthBasicProvider AuthUserFile "/usr/local/apache/passwd/пароли" AuthLDAPURL ldap://ldaphost/o=yourorg AuthGroupFile "/usr/local/apache/passwd/groups" Требовать группу имя_группы Требовать группу ldap cn=mygroup,o=yourorg </Каталог> Чтобы немного продвинуть авторизацию, директивы контейнера авторизации, такие как
Помимо авторизацииСпособ применения авторизации теперь гораздо более гибкий, чем простая проверка одного хранилища данных. Упорядочивание, логика и выбор способа авторизации теперь возможны. Применение логики и порядкаВ прошлом контроль над тем, как и в каком порядке будет применяться авторизация, был загадкой. В Apache 2.2 был представлен механизм аутентификации на основе провайдера, чтобы отделить фактический процесс аутентификации от авторизации и вспомогательных функций. Одним из дополнительных преимуществ было то, что провайдеры аутентификации можно было настраивать и вызывать в определенном порядке, который не зависел от порядка загрузки самого модуля аутентификации. Этот же механизм на основе провайдера был перенесен и в авторизацию. Это означает, что С введением директив контейнера авторизации, таких как
По умолчанию все
Использование провайдеров авторизации для управления доступомАутентификация по имени пользователя и паролю — это только часть истории. Часто вы хотите впустить людей, основываясь на чем-то другом, а не на том, кто они есть. Что-то вроде того, откуда они берутся. Поставщики авторизации Использование этих поставщиков определяется директивой
Требовать IP -адрес где address — это IP-адрес (или частичный IP-адрес) или: Требовать хост имя_домена где domain_name — полное доменное имя (или частичное доменное имя); при желании вы можете указать несколько адресов или доменных имен. Например, если у вас есть кто-то, кто рассылает спам на вашу доску объявлений, и вы хотите, чтобы он не вмешивался, вы можете сделать следующее: <ТребоватьВсе> Требовать все предоставленные Требовать не ip 10.252.46.165 </RequireAll> Посетители, приходящие с этого адреса, не смогут увидеть контент, подпадающий под действие этой директивы. Если вместо этого у вас есть имя машины, а не IP-адрес, вы можете использовать его. <ТребоватьВсе> Требовать все предоставленные Не требовать хоста host.example.com </RequireAll> А если вы хотите заблокировать доступ со всего домена, вы можете указать только часть адреса или доменного имени: <ТребоватьВсе> Требовать все предоставленные Требовать не ip 192.168.205 Не требовать размещения phishers.example.com moreidiots.example Не требовать размещения ке </RequireAll> Использование Обратная совместимость контроля доступаОдним из побочных эффектов внедрения механизма
аутентификации на основе провайдера является то, что прежние директивы управления доступом
ПримечаниеДирективы, предоставленные , Кэширование аутентификацииМогут быть случаи, когда аутентификация создает неприемлемую нагрузку на провайдера или вашу сеть. Это, скорее всего, повлияет на пользователей Некоторым пользователям это может предложить существенное повышение производительности. Больше информацииВы также должны прочитать документацию для
Различные шифры, поддерживаемые Apache для аутентификационных данных, описаны в разделе «Шифрование паролей». И вы можете посмотреть руководство по управлению доступом, в котором обсуждается ряд связанных тем. |