Laravel Passport против JWT против Oauth2 против Auth0

Смятение о типах API API в Laravel?

В настоящее время я изучаю, как создавать API в Laravel, и я оказался в этом запутанном понятии. После нескольких дней исследований и практических занятий я мог бы, наконец, понять эти концепции, чтобы сделать мини-гид. Мне пришлось заглянуть во множество отдельных веб-страниц, поэтому я сделаю все возможное, чтобы объяснить отношения между ними.

Ответ 1

Каковы эти понятия?

  • Passport - это официальный пакет Laravel, который реализует Oauth2 и JWT.
  • Auth0 - это сервис аутентификации и авторизации. Это своего рода решение "все в одном" для аутентификации API. Он реализует JWT по умолчанию и может реализовать Oauth2, а также многие другие протоколы.
  • OAuth2 - это структура авторизации или протокол, который позволяет приложениям (тем, которые вы собираетесь создавать) предоставлять ограниченный доступ к учетным записям пользователей, таким как Facebook, GitHub и т.д. Представьте, что ваше приложение стало достаточно большим, чтобы предлагать вход с именем приложения ЗДЕСЬ "или предоставить ограниченный доступ к вашей учетной записи пользователя другим сторонним приложениям. С Oauth2 вы можете достичь этого среди многих других вещей.
  • JWT - это формат токенов. Другими словами, именно так будут организованы данные для создания токена. Другой формат токена будет SWT.

Другими словами:

  • Паспорт реализует → Oauth2 и JWT.
  • Auth0 может реализовать → Oauth2 или многие другие протоколы, такие как LDAP, OPEN ID и т.д.
  • Oauth2 может реализовать → JWT или другие форматы токенов, такие как SWT...

Что вы должны использовать?

Для новичка было бы безумием создать собственную реализацию Oauth2, совместимую с Laravel. Oauth2 вышел. Все, что мы помним, это три варианта пакета. Паспорт, tymondesigns/jwt-auth и Auth0.

JWT (пакет tymondesigns/jwt-auth) отлично подходит для создания только аутентификации по электронной почте и паролю. Хотя, если вы используете Passport для базовой аутентификации по электронной почте и паролю, вам не нужно беспокоиться о том, что "реализация Oauth2" повлияет на производительность вашего приложения (что не так уж и много). Разница возникает, когда все эти пугающие таблицы миграции и маршруты генерируются Passport, но с небольшой практикой вы поймете их. Кажется, что установка Auth0 быстрая, но в некоторых случаях она может быть слишком преувеличена, если не считать безопасности работы с пакетом сообщества Laravel.

Настоящее совпадение происходит между Auth0 и Passport. Auth0 - швейцарский армейский нож по сравнению с паспортом. У вас будет действительно хорошая панель инструментов, которая позволит вам управлять всеми аспектами вашего API. От сторонней аутентификации, чтобы добавить больше приложений (мобильные, веб, настольные), которые могут использовать этот API. Паспорт можно сравнить с более тонким ножом. Он был создан специально для Laravel, и в долгосрочной перспективе вы можете реализовать собственную красивую и настраиваемую панель управления для управления своими клиентами API.

Заключение

Я думаю, что реальный выбор должен быть между Passport и Auth0. От вас зависит, хотите ли вы создать API в Laravel, или вы будете больше погружаться в мир API, чем в Laravel. В моем случае я предпочитаю Passport, чем Auth0 и в конце JWT. Причины:

  • Мне нравится работать с официальными пакетами Laravel.
  • Помимо маршрутов и таблиц, добавленных в мой проект, это не повлияет.
  • Если бы я начал с самой базовой аутентификации API и хотел масштабировать, это было бы намного проще.

Все еще говоря о последнем пункте, некоторые могут сказать, что сообщество Auth0 мало. Это в основном так. Но также у него есть потрясающий персонал поддержки клиентов.


Учебники по паспорту и Oauth2

Laravel и Oauth2 Docs объяснение токенов может быть немного сложным. Вот хорошее объяснение паспортов (следовательно, Oauth2) различных типов токенов и вариантов их использования. Так как я не мог понять часть "маршрутов" урока, я бы не рекомендовал ту часть урока.

Это хорошее учебное видео по паспорту, которое также использует приложение PostMan Chrome для вызовов API. Для тех из вас, кто плохо знаком с этим API, такие приложения, как PostMan, значительно облегчат вашу работу, чем использование команды curl для Linux/Mac. Вы можете посмотреть полную серию или просто паспортную часть. На данный момент я застрял на видео 4. Здесь мой в настоящее время не решено Вопрос.

Ресурсы

Многие из этих ресурсов распространяются выше в статье, но у меня также есть некоторые здесь.