Разница между аутентификацией на основе форм и аутентификацией на основе токенов
Как решить, какую аутентификацию использовать для аутентификации. (Например: Аутентификация на основе форм или Аутентификация на основе токенов).
Каковы преимущества использования аутентификации на основе токенов по сравнению с аутентификацией на основе форм / сессий / файлов cookie? Я прочитал несколько статей в Интернете, но до сих пор неясно.
Может кто-нибудь объяснить мне, как выбрать между этими двумя для веб-аутентификации и аутентификации пользователей мобильной платформы.
2 ответа
JWT лучше, если у вас нет особых потребностей, о которых я не знаю.
Сессия требует куки и куки работают только в браузере JWT: по сути, данные в формате JSON, поэтому вы можете работать с ним на другой платформе.
Кроме того, JWT более безопасен. Вы были бы уязвимы для CSRF-атак, если вы используете куки в качестве постоянного механизма аутентификации. Хакер может обмануть жертву на своем веб-сайте и щелкнуть по кнопке, и его запрос будет отправлен как жертва, поскольку файлы cookie отправляются автоматически при каждом запросе.
С JWT вы можете хранить его в любом хранилище, а именно: localStorage
для рабочего стола. JWT вручную отправляется с каждым запросом от вас. Таким образом, вышеописанный сценарий не произойдет.
Может ли хакер изменить ваш JWT в localStorage
и добавьте больше утверждений, то есть: измените тип пользователя с 'user' на 'admin', нет!. Требуется какой-то закрытый ключ, который есть только у сервера. Вы можете попробовать Auth0 и проверить его в jwt.io.
Это ключевые моменты, имо. Есть и другие преимущества, но вы можете легко узнать через Google.
Я использую токены с API RESTful и сеанс на основе веб-приложения (исключая SAP, поскольку обычно я создаю API для обработки уровня обслуживания).
Основная причина здесь проста для меня, с любым API, я хочу, чтобы все отправлено в заголовке или теле. Как такой токен на основе является путь. С MVC, однако, мне все равно, так как я рендеринг представлений, а не только данных.