Микрописервер. Реализуем Базовую Аутентификацию Для Iot-Устройств



Что такое микрописервер? Микрописервер — это простая библиотека для реализации HTTP-сервера на базе таких устройств, как ESP8266 или ESP32, написанная на Micropython. Вы можете скачать это здесь .



Что мы пытаемся сделать?

Часто нам необходимо ограничить доступ к веб-интерфейсу нашего IoT-устройства извне, поскольку интерфейс может содержать элементы управления или данные, которые мы не хотим предоставлять внешнему миру.

Стандартным средством ограничения доступа к веб-интерфейсу является метод аутентификации, т.е.

для доступа к нашему устройству мы запросим логин и пароль пользователя.

Для решения проблемы аутентификации мы будем использовать такой механизм, как Базовая аутентификация , этот метод является самым простым в реализации, поскольку он не требует ни использования файлов cookie, ни наличия механизма сеанса, ни специальной HTML-страницы и формы для аутентификации.



Что такое базовая аутентификация?

Механизм базовой аутентификации поддерживается всеми современными браузерами.

Он не защищает конфиденциальность передаваемых учетных данных.

Логин и пароль пользователя просто закодированы с помощью Base64 в HTTP заголовок под названием «Авторизация», они никак не шифруются и не хэшируются.

Поэтому для повышения безопасности этот механизм лучше всего использовать в сочетании с безопасным протоколом.

HTTPS. Поскольку пароль и информация для входа должны отправляться в заголовке каждого HTTP-запроса, веб-браузеру необходимо кэшировать введенные учетные данные в течение разумного периода времени, чтобы избежать постоянного запроса у пользователя имени пользователя и пароля.

Политики кэширования различаются в зависимости от браузера.

В современных браузерах кэшированные учетные данные базовой аутентификации обычно удаляются при очистке истории просмотров.

Большинство браузеров позволяют пользователям специально очищать учетные данные, хотя эту опцию может быть трудно найти, и обычно она удаляет учетные данные для всех посещенных сайтов.

На стороне браузера механизм авторизации построен следующим образом:

  • Логин и пароль объединяются одним двоеточием (:).

    Это означает, что само имя пользователя не может содержать двоеточие;

  • Результирующая строка кодируется в последовательность октетов.

    Набор символов, используемый для этой кодировки, по умолчанию не указан, если он совместим с US-ASCII, но сервер может предложить использовать UTF-8, отправив параметр charset;

  • Результирующая строка кодируется с использованием Base64;
  • Затем к закодированной строке добавляются метод авторизации и пробел (например, «Basic»);
Например, если браузер использует Aladdin в качестве имени входа и open sesame в качестве пароля, то значением поля будет кодировка Base64 Aladdin:open sesame или QWxhZGRpbjpvcGVuIHNlc2FtZQ== .

Тогда заголовок авторизации будет выглядеть так: Авторизация: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== Со стороны сервера запрос на авторизацию обрабатывается следующим образом:

  • когда сервер хочет, чтобы браузер аутентифицировал себя на сервере, сервер должен соответствующим образом ответить на неаутентифицированные запросы;
  • для неаутентифицированных запросов сервер должен вернуть ответ, заголовок которого содержит статус HTTP 401 Unauthorized и заголовок WWW-Authenticate;


Давайте реализуем базовую аутентификацию

Теперь, когда механизм авторизации стал понятен, напишем реализацию авторизации с использованием библиотеки HTTP-сервера.

микрописервер .

Чтобы сохранить соединение с паролем/логином, мы будем использовать формат данных json и хранить его в файле отдельно от кода с именем Credentials.json:

   

{

Теги: #Программирование микроконтроллеров #микроконтроллеры #python #ESP32 #Сделай сам или Сделай сам #Электроника для начинающих #Умный дом #электроника #сделай сам #MicroPython #ESP8266
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.