Разница между аутентификацией на основе форм и аутентификацией на основе токенов

Как решить, какую аутентификацию использовать для аутентификации. (Пример: аутентификация на основе форм или аутентификация на основе токенов).

Каковы преимущества использования аутентификации на основе токенов по сравнению с аутентификацией на основе форм/сеансов/файлов cookie. Я прочитал несколько статей в Интернете, но все еще не ясно.

Может ли кто-нибудь объяснить мне, как выбрать между этими двумя для аутентификации пользователей веб-платформы и мобильной платформы.


person gorp88    schedule 27.12.2017    source источник


Ответы (2)


JWT лучше, если у вас нет особой потребности, о которой я не знаю.

Для сеанса требуются файлы cookie, а файлы cookie работают только в браузере JWT: по сути, данные в формате JSON, поэтому вы можете работать с ними на другой платформе.

Кроме того, JWT более защищен. Вы будете уязвимы для CSRF-атак, если будете использовать файлы cookie в качестве постоянного механизма аутентификации. Хакер может обмануть жертву на своем веб-сайте и нажать какие-то кнопки, и его запрос будет отправлен как жертва, потому что файлы cookie отправляются автоматически с каждым запросом.

С JWT вы можете хранить его в любом хранилище, например: localStorage для рабочего стола. JWT отправляется вручную с каждым запросом от вас. Таким образом, описанный выше сценарий не произойдет.

Может ли хакер изменить ваш JWT в localStorage и добавить дополнительные утверждения, например: изменить тип пользователя с «пользователь» на «администратор», нет!. Для этого требуется некоторый закрытый ключ, который есть только у сервера. Вы можете попробовать Auth0 и протестировать его в jwt.io.

Это ключевые моменты, имхо. Есть и другие преимущества, но вы можете легко узнать через Google.

person lock42    schedule 27.12.2017
comment
Итак, может ли хакер каким-либо образом изменить объект сеанса пользователя, прочитанный из хранимой процедуры. - person gorp88; 28.12.2017
comment
Хранимая процедура? если вы имели в виду localStorage, то нет. Единственный способ создать/изменить токен — это когда у вас есть ключ secret, который вы храните на сервере. - person lock42; 28.12.2017

Я использую токены baes с API RESTful и сеанс на основе веб-приложения (за исключением SAP, поскольку я обычно создаю API для обработки уровня обслуживания).

Основное рассуждение здесь для меня простое, с любым API я хочу, чтобы все отправлялось в заголовке или теле. Таким образом, основанный на токене путь. Однако с MVC мне все равно, поскольку я отображаю представления, а не только данные.

person rahicks    schedule 28.12.2017