HTTP Basic Authentication или HTTP авторизация
Доброго времени суток. В данной статье мы остановимся на таком понятии как http basic authentication или http авторизация. Для чего нужна http basic authentication и как настроить http авторизацию. И в качестве примера мы сделаем HTTP авторизацию для админки WordPress. Ну что поехали.
Первое, что мы сделаем – это разберемся с понятием http авторизации.
HTTP authentication
HTTP authentication – это протокол, описанный в стандартах HTTP 1.0/1.1. Работает следующим образом:
- При обращении неавторизованного пользователя к защищенному ресурсу сервер возвращает «401 Unauthorized» и добавляет заголовок «WWW-Authenticate»
- Браузер при получении ответа с заголовком «WWW-Authenticate» выкидывает форму для ввода логина и пароля. И в дальнейшем при обращении к данному ресурсу передает заголовок «Authorization», где хранятся данные пользователя для аутентификации.
Существуют несколько схем http авторизации:
- Basic
- Digest
- NTLM
- Negotiate
Главное отличие – это уровень безопасности. Мы остановимся на basic – это самая небезопасная схема. Но при использовании HTTPS, является относительно безопасным.
Схема Basic является наиболее простой схемой, при которой логин и пароль передаются в заголовке «Authorization» в незашифрованном виде.
HTTP авторизация для админки WordPress
Если вы используете SSL на своем сайте, то вы можете дополнительно настроить http basic authentication для админки WordPress. А это дополнительная защита.
Небольшое отступление: у меня ОС Windows 10 и OpenServer, который расположен по адресу e:\OpenServer\
Первое, что нам необходимо сделать – это создать файл .htpasswd
Затем перейти на один из сервисов генерации пароля (или воспользоваться утилитой htpasswd у кого Linux), например https://truemisha.ru/tools/htpasswd-generator И сгенерировать пароль
Скопируем строку и вставим в только что созданный файл .htpasswd
Admin:$apr1$grwacq2z$g1Z5bNYkD0vJKF2HllrRw/
Отлично. Теперь необходимо настроить apache с помощью файла .htaccess.
Переходим в каталог с админкой, по умолчанию это wp-admin и в нем создаем файл .htaccess.
И в него помещаем следующий код:
AuthType Basic AuthName "Input username and password" AuthUserFile e:\OpenServer\.htpasswd Require valid-user
Где в AuthName указываем текст сообщения, в AuthUserFile указываем путь к файлу .htpasswd.
Сохраняем и проверяем.
При попытке перейти к админке WordPress сервер запросит http авторизацию.
Если мы не введем логин и пароль, то сервер вернет ошибку «Authentication required»
Вводим логин и пароль (Логин: Admin, а пароль: admin)
И нас пустило на стандартную страницу авторизации.
И видео к данной статье:
Заключение
Мы с вами дополнительно защитили админку WordPress http авторизацией. Но помните, что мы использовали http basic authentication, а данный тип передает логин и пароль в незашифрованном виде. Используйте https. А в следующей статье мы рассмотрим как организовать http авторизацию с помощью плагина для WordPress (когда у нас нет доступа к настройкам apache). Так, что не пропускайте выхода новых статей подписавшись: VK, facebook, twitter
Возник вопрос по basic auth. При неправильном вводе данных нужно выдавать свою страницу, это делается заменой 401, или по-другому?
Непонятно мне, какой логин и пароль? вводить при http авторизации:
Логин: Admin
Пароль: $apr1$grwacq2z$g1Z5bNYkD0vJKF2HllrRw/
Такой не проходит.
$apr1$grwacq2z$g1Z5bNYkD0vJKF2HllrRw/ — это не пароль, хеш пароля
Отлично, спасибо за ответ. Вопрос тот же:
какой логин и пароль? вводить при http авторизации на Вашем примере
Переходите, например, на этот сервис https://htmlweb.ru/service/htpasswd.php и генерируете хеш пароля, который вы сами задаете. Или с помощью утилиты htpasswd (если работаете под UNIX-системами)