Усі статті
OAuthlocal developmentauthenticationcallbacks

Як тестувати OAuth-колбеки локально

Щоб тестувати OAuth-колбеки локально, потрібен публічний HTTPS-URL, що вказує на ваш локальний застосунок. OAuth-провайдери після автентифікації перенаправляють користувача на зареєстрований URL колбека — і більшість вимагає HTTPS, який чистий localhost не забезпечує без додаткового налаштування.

Чому redirect URI блокують localhost

Провайдери OAuth 2.0 перевіряють параметр redirect_uri за білим списком зареєстрованих URL. Під час розробки ваш колбек може виглядати так:

https://your-app.portpreview.dev/auth/callback

Без тунелю ви або реєструєте http://localhost:3000/auth/callback (дозволено деякими провайдерами, але не всіма), або деплоїте на staging за кожної зміни авторизації. Тунель до localhost дає справжній HTTPS-ендпоінт на вашій машині.

Що потрібно для локального тестування OAuth

  • Облікові дані OAuth-застосунку (client ID і secret) від провайдера.
  • Локальний застосунок із маршрутами авторизації для запуску входу й обробки колбека.
  • URL тунелю, зареєстрований як дозволений redirect URI в панелі провайдера.
  • Змінні середовища, що вказують на URL тунелю під час розробки.

Покроково: локальне тестування OAuth з PortPreview

  1. Запустіть застосунок локально з увімкненими маршрутами OAuth.
  2. Виконайте npx portpreview 3000, щоб отримати публічний HTTPS-URL.
  3. Додайте URL колбека (наприклад, https://your-app.portpreview.dev/auth/callback) до дозволених redirect URI вашого OAuth-провайдера.
  4. Оновіть локальне середовище, щоб воно використовувало URL тунелю як базовий.
  5. Запустіть OAuth-флоу в браузері й пройдіть повний цикл редиректу.
  6. Перевірте обмін токенами, створення сесії та обробку помилок.

Поради щодо провайдерів

Google OAuth

Google дозволяє http://localhost для розробки, але тестування через HTTPS-тунелі перевіряє поведінку, близьку до продакшену, зокрема прапорці secure-cookie й політики змішаного контенту.

GitHub OAuth

GitHub вимагає точного збігу redirect URI. Зареєструйте URL тунелю в налаштуваннях OAuth-застосунку й оновлюйте його при зміні сесії тунелю або використовуйте стабільний субдомен, якщо провайдер тунелю це підтримує.

Auth0 та корпоративні IdP

Корпоративні провайдери ідентичності часто вимагають HTTPS-колбеки й іноді повністю забороняють localhost. Тунелі — стандартний обхідний шлях для локального тестування інтеграцій SAML і OIDC.

Поширені помилки локального тестування OAuth

  • Невідповідність redirect URI: URL колбека має збігатися точно, разом із кінцевими слешами й регістром шляху.
  • Застарілий URL тунелю: якщо URL тунелю змінюється між сесіями, оновіть білий список провайдера.
  • Параметр state не перевіряється: завжди перевіряйте параметр state для захисту від CSRF, навіть під час розробки.
  • Проблеми з доменом cookie: сесійні cookie можуть не зберігатися, якщо налаштування домену конфліктують із хостнеймом тунелю.

Питання безпеки

OAuth-колбеки несуть коди авторизації, які потрібно обмінювати на боці сервера. Ніколи не розкривайте client secret у фронтенд-коді й сприймайте URL тунелів як тимчасові ендпоінти розробки, а не продакшен-домени. Прочитайте наш посібник із безпеки тунелів до localhost для найкращих практик.

Діліться OAuth-флоу з командою

Коли продукту або QA треба протестувати вхід через соцмережі, діліться URL тунелю замість деплою на staging. Дивіться як поділитися локальним dev-сервером для спільних воркфлоу.

Приєднайтеся до списку очікування PortPreview, щоб спростити тестування OAuth і вебхуків з одного тунелю.

Поширені запитання

Чи можна тестувати OAuth на localhost?
Так. Більшість OAuth-провайдерів дозволяють redirect URI виду http://localhost, але багато хто вимагає HTTPS для тестування, близького до продакшену. Тунель до localhost дає публічний HTTPS-URL, зіставлений із вашим локальним застосунком.
Чому OAuth-провайдери вимагають HTTPS redirect URI?
HTTPS захищає коди авторизації й токени під час передавання в процесі редиректу. Багато провайдерів примусово вимагають HTTPS, щоб запобігти перехопленню конфіденційних даних у незахищених мережах.
Як зареєструвати URL тунелю як OAuth redirect URI?
Скопіюйте HTTPS-URL тунелю, додайте шлях колбека й внесіть повний URL до списку дозволених redirect URI в панелі розробника вашого провайдера.