Страницы

Поиск по вопросам

воскресенье, 2 июня 2019 г.

Используются ли в современных веб-проектах Basic и Digest аутентификации?

Я в них не сильно разбираюсь, поэтому мое мало информированное мнение пока стоит на позиции, что они почти никогда не пригодятся, и если нужно будет создавать легкий или средний веб-проект, то алгоритм аутентификации и авторизации пользователей и админов будет целиком на плечах веб-разработчика, и скорее всего так все делают?


Ответ

Для начала, давайте разберемся как работают перечисленные вами механизмы аутентификации.
При HTTP Basic аутентификации вместе с каждым HTTP запросом вместе с заголовками передается связка логин/пароль, которые позволяют однозначно аутентифицировать пользователя.
HTTP Digest аутентификация похожа на HTTP Basic, но вместо связки логин/пароль передается контрольная сумма, вычисленная на основе параметров запроса (метода, URI, иногда тела запроса), логина, пароля и, возможно, еще нескольких дополнительных параметров. (Часто используется уникальный для каждого запроса параметр nonce, препятствующий выполнению атаки на повторение запросов.)
Если говорить о других типах аутентификации, то чаще всего web-приложения используют аутентификацию на базе Cookie. Пользователь передает логин/пароль на сервер, сервер проверяет эти данные и в случае успеха отдает пользователю заголовок Set-Cookie с идентификатором пользовательского сеанса. При всех последующих запросах пользователь передает посредством Cookie этот идентификатор, который и используется для аутентификации.
Принципиальная разница между первыми двумя методами и последним заключается в том, что для механизмов HTTP Basic и HTTP Digest серверу не нужно хранить сессионные данные пользователей (идентификатор пользовательской сессии). При таком подходе, каждый HTTP запрос содержит всю необходимую для построения ответа информацию и может быть изолирован от предыдущих/последующих запросов.
Идея сервера, не хранящего состояние пользовательских сессий лежит в основе довольно популярного RESTful подхода. Этот подход часто используется для построения серверного API.
И да, говорить, что HTTP Basic/Digest не используется в современных web-проектах -- неверно. Тут все зависит от сложности, целей и задач проекта.
Замечание:
Важно понимать разницу между аутентификацией и авторизацией
Под аутентификацией обычно понимают процесс определения того, что пользователь является именно тем, кем он представился. Под авторизацией обычно понимают проверку полномочий конкретного, уже аутентифицированного, пользователя на выполнение некоторых действий в системе.
Выше были указаны только методы аутентификации. Построение правильного механизма авторизации пользователей все равно лежит на плечах разработчика.

Комментариев нет:

Отправить комментарий