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 без жодної з його переваг.