OAuth или JWT? Какой из них использовать и почему?
Я начинаю узнавать о аутентификации на токенах, и я пытаюсь узнать, как ее реализовать в Laravel 5. Я столкнулся с двумя очень популярными технологиями для этого, но я запутался, так как я новичок в обеих этих технологиях.
Эта статья на Medium говорит, что я должен пойти с lucadegasperi/oauth2-server-laravel, который, я уверен, является очень популярным пакетом в сообществе, судя по количеству звезд в Github и количеству ссылок, которые привели меня к этому. Это должно помочь мне с реализацией OAuth.
В этой статье в Scotch.io рекомендуется использовать tymondesigns/jwt-auth, который также очень популярен снова, судя по количеству звезд в Github.
В этот момент я нерешительно отношусь к тому, что использовать в основном потому, что я начинающий разработчик, и я не работал ни с одним из них.
Может ли кто-нибудь указать мне, каковы плюсы и минусы каждого из них и какой из них я должен реализовать? Будет ли мой тип проекта также определять, какой тип я должен использовать? И как?
Кроме того, если вы делаете аргумент, что я должен выбирать один над другим, можете ли вы также указать хорошие ресурсы, которые помогут мне начать с них. Кроме двух ссылок, которые я предоставил себе, конечно.
Ответы
Ответ 1
JWT - простой протокол проверки подлинности, Oauth - это среда проверки подлинности.
У опытного разработчика потребуется около месяца, чтобы полностью понять и реализовать Oauth. Опытный разработчик может забрать протокол JWT примерно через день после чтения спецификаций. Поэтому в основном это сводится к вашему конкретному прецеденту.
Если вам нужна простая аутентификация HTTP без аутентификации на api, тогда JWT просто отлично и относительно быстро реализуется даже для начинающего разработчика.
Несколько ресурсов JWT для вас:
И ресурс Oauth:
Ответ 2
JSON Web Token (JWT) - открытый стандарт (RFC 7519), который определяет компактный и автономный способ безопасного передачи информации между сторонами как объект JSON. Эта информация может быть проверена и проверена, поскольку она имеет цифровую подпись. JWT могут быть подписаны с использованием секретного (с алгоритмом HMAC) или пары открытого/закрытого ключей с использованием RSA.
OAuth 2.0 - протокол для авторизации. OAuth 2.0 заменяет работу, выполненную на оригинальном протоколе OAuth, созданном в 2006 году. OAuth 2.0 фокусируется на простоте клиентского разработчика, обеспечивая при этом конкретные потоки авторизации для веб-приложений, настольных приложений, мобильных телефонов и устройств для гостиной. Эта спецификация разрабатывается в рамках IETF OAuth WG.
- OAuth У нас разные типы токенов.
1) Знаки WS-Security, особенно маркеры SAML
2) Знаки JWT
3) Устаревшие жетоны
4) Пользовательские маркеры
Самое главное, что нужно понимать при сравнении JWT и OAuth2, заключается в том, что они не похожи друг на друга. Или даже несовместимо.
JWT - протокол аутентификации
Это означает, что это строгий набор инструкций для выдачи и проверки подписанных токенов доступа. В токенах содержатся утверждения, которые используются приложением для ограничения доступа к пользователю.
OAuth2 - это инфраструктура аутентификации
OAuth2, с другой стороны, является основой, думаю, очень подробное руководство, позволяющее пользователям и приложениям разрешать определенные разрешения для других приложений как в частных, так и в общедоступных настройках.
Несколько хороших ссылок:
Ответ 3
JWT означает JSON Web Token, поскольку название предполагает, что это всего лишь токен для передачи защищенных данных между двумя сторонами, то есть клиентом и сервером.
Oauth2 на другом - это набор правил или процедура, обычно называемая каркасом, которая помогает аутентифицировать и разрешать двум сторонам передавать защищенные данные.
Следующая диаграмма объяснит, как работает oauth2
![поток кода авторизации]()
Вот более подробное объяснение шагов на диаграмме:
- Приложение запрашивает авторизацию для доступа к ресурсам службы от пользователя
- Если пользователь разрешил запрос, приложение получает разрешение на авторизацию
- Приложение запрашивает токен доступа с сервера авторизации (API), предоставляя аутентификацию своей собственной идентификации и разрешение на авторизацию
- Если идентификатор приложения аутентифицирован и разрешение авторизации действительно, сервер авторизации (API) выдает токен доступа к приложению. Авторизация завершена.
- Приложение запрашивает ресурс с сервера ресурсов (API) и представляет токен доступа для аутентификации
- Если токен доступа действителен, сервер ресурсов (API) обслуживает ресурс для приложения
Оба они могут использоваться вместе при передаче защищенных данных.
Где JWT вступает в игру на 3-м 6-м шагах oauth2