Ответ 1
Мы, разработчики программного обеспечения (иногда), имеем тенденцию применять новую горячую вещь везде, где мы смотрим;это, возможно, вариант поговорки: если все, что у нас есть, это молоток, все выглядит как гвоздь, и в этом случае мы просто испытываем отчаянное желание использовать эту новую вещь, о которой мы узнали.
Интересным моментом в этом сравнении является то, что ни JWT, ни Cookies на самом деле не являются механизмами аутентификации; первый просто определяет формат токена, а второй - механизм управления состоянием HTTP. Только этого достаточно, чтобы дать нам понять, что отстаивать то, что одно лучше другого, неправильно.
Это правда, однако, что оба широко используются в системах аутентификации.
Традиционное серверное веб-приложение использует файлы cookie для отслеживания аутентифицированного пользователя, чтобы они не были обязаны предоставлять свои учетные данные при каждом запросе. Обычно содержимое файла cookie представляет собой (надеюсь) случайно сгенерированный уникальный идентификатор, который сервер будет использовать для поиска данных сеанса, хранящихся на сервере.
Однако для веб-приложений нового типа - API - гораздо чаще принимать токен (в большинстве случаев в формате JWT), чтобы сервер мог решить, должен ли он предоставлять доступ тому, кто делает запрос. Причина этого, возможно, заключается в том, что, хотя у традиционного веб-приложения был один основной тип клиента, веб-браузер, который имеет полную поддержку файлов cookie, API обычно используются гораздо более простыми клиентами HTTP, которые изначально не поддерживают файлы cookie.
Я думаю, именно поэтому мы можем утверждать, что аутентификация на основе токенов имеет больше смысла для собственных мобильных приложений. Эти приложения, как правило, зависят от серверного веб-API, и мы видели, что если API поддерживает токены, это увеличит диапазон клиентов, которые могут его использовать, поэтому это просто наиболее практичная вещь.
В заключение, и чтобы попытаться ответить на ваш конкретный вопрос, я бы сказал, что JWT имеет преимущество перед файлами cookie в нативных мобильных приложениях только потому, что они в настоящее время широко используются, это означает больше ресурсов для обучения, SDK, известные ловушки (в основном потому что кто-то другой уже сделал это и не смог) и т.д.
Тем не менее, используйте их только в том случае, если они дают вам необходимые гарантии безопасности и в конечном итоге упрощают ваш сценарий. Если вы еще не прошли через это, я думаю, вы также оцените Cookies vs Tokens: Полное руководство.