Почему я должен использовать базовую аутентификацию HTTP вместо параметров имени пользователя и пароля?

У меня есть конечная точка API https://www.example.com/api/authentication, которая вводит имя пользователя и пароль в качестве входных данных и возвращает токен аутентификации.

Что касается передачи имени пользователя и пароля, у меня есть два варианта (по крайней мере), а именно:

  • Базовая аутентификация HTTP (которая передает учетные данные как часть заголовков HTTP)
  • Параметры HTTP POST

Я понимаю, что ни один из методов не обеспечивает шифрование (следовательно, использование HTTPS/SSL). Я также понимаю, почему использование HTTP GET - это плохая идея.

Есть ли какая-либо реальная разница (помимо того факта, что базовая аутентификация больше идиоматична) между двумя методами?

Ответ 1

Разница заключается в том, что базовая аутентификация - это хорошо определенная схема "запрос/ответ", которую все браузеры понимают, и именно сервер запускает ее, сообщая клиенту, что для нее требуется (базовая) аутентификация для области. Это заставляет браузер отображать всплывающее окно для пользователя, чтобы ввести имя/пароль, которые он затем передает в заголовках, как вы описали.

В вашем втором примере вы должны сделать все это по своему индивидуальному пути и создать свою собственную форму для входа для пользователя (и т.д.).

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

Ответ 2

HTTP. Обычная проверка подлинности - это самый простой способ обеспечения контроля доступа к веб-ресурсам, поскольку для него не требуются файлы cookie, идентификаторы сеансов или страницы входа в систему; скорее, HTTP-проверка подлинности использует стандартные поля в заголовке HTTP, устраняя необходимость в рукопожатиях.