Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Коли замість Sanctum потрібен Laravel Passport?

Sanctum і Passport обидва дають автентифікацію API, але розв'язують різні задачі.

Sanctum - для власних клієнтів:

  • сесійна автентифікація для власного SPA;
  • персональні токени для мобільних застосунків, CLI, інтеграцій, які користувач створює сам;
  • простий: одна таблиця токенів, мінімум налаштувань.

Passport - повноцінний OAuth 2.0 сервер. Потрібен, коли:

1. Сторонні застосунки отримують доступ від імені користувачів - сценарій «Увійти через ваш сервіс» / «Дозволити застосунку X доступ до вашого облікового запису»:

Застосунок партнера → перенаправлення на ваш сайт → користувач погоджується
→ партнер отримує токен з обмеженими правами (scopes)

Це Authorization Code flow (з PKCE для публічних клієнтів). Користувач не передає партнеру пароль, бачить, які права надає, і може відкликати доступ.

2. Сервер-сервер інтеграції за стандартом - Client Credentials grant: машинний клієнт отримує короткоживучий токен без участі користувача.

3. Потрібен стандарт, який розуміють сторонні інструменти - бібліотеки OAuth-клієнтів, API-шлюзи, OpenID Connect-подібні сценарії.

4. Refresh-токени й короткоживучі токени доступу зі стандартною логікою оновлення.

Що дає Passport:

  • реєстрація OAuth-клієнтів (php artisan passport:client), екран згоди;
  • scopes (Passport::tokensCan([...])) і перевірка через middleware;
  • токени доступу у форматі JWT, підписані ключами (passport:keys);
  • терміни дії й refresh-токени (Passport::tokensExpireIn(), refreshTokensExpireIn()).

Ціна Passport:

  • складніша конфігурація й більше таблиць;
  • ключі шифрування треба безпечно зберігати й розгортати на всіх серверах;
  • OAuth - великий стандарт з багатьма способами помилитися (redirect URI, PKCE, зберігання секретів клієнтів).

Правило вибору:

Сценарій Інструмент
власний SPA Sanctum (сесія)
власний мобільний застосунок Sanctum (токени)
користувач створює токени для своїх скриптів Sanctum
сторонні застосунки з доступом від імені користувачів Passport
ваш сервіс як провайдер «Увійти через ...» Passport
сервер-сервер за стандартом OAuth Passport (client credentials)

Поширена помилка - Passport «на виріст» для звичайного SPA чи мобільного застосунку: складність OAuth без жодної з його переваг.

Докладніше в документації: Laravel Passport

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання