Redirect URI
Redirect URI — адрес callback-страницы приложения, на который authorization server возвращает пользователя после входа.
Стандарт
Redirect URI регистрируется у клиента заранее. Значение из authorization request должно совпадать с зарегистрированным значением.
Практика
Не используйте широкие шаблоны и неизвестные callback-адреса. Для production регистрируйте
HTTPS-адрес. Для SPA и SDK технический callback redirectUri отличается от относительного пути,
на который приложение перейдёт после входа.
Чем Authoriza может быть полезна
Authoriza проверяет зарегистрированный callback до завершения flow и тем самым помогает ограничить место возврата пользователя. Настройте URI по пошаговому руководству.
Redirect URI и переход после входа — не одно и то же
redirectUri SDK — технический callback OAuth/OIDC. На него Authoriza возвращает code
и state, после чего SDK завершает flow. Параметр redirectAfterLoginTo — внутренний
относительный путь приложения, например /dashboard. Он не регистрируется в Authoriza
как Redirect URI.
const auth = createAuthoriza({
clientId: 'YOUR_CLIENT_ID',
redirectUri: 'https://example.com/auth/callback',
});
await auth.login({ redirectAfterLoginTo: '/dashboard' });
Разделение защищает от подмены внешнего адреса: SDK принимает только допустимый относительный путь для перехода внутри приложения.
Локальная разработка и production
Локальный callback:
http://localhost:3000/auth/callback
Production callback:
https://example.com/auth/callback
Это два разных URI. Если приложение работает на другом порту, имеет другой path или добавился trailing slash, значение нужно зарегистрировать отдельно согласно правилам вашего App.
Диагностика mismatch
Сравните значение из запроса со значением в кабинете посимвольно. Проверьте protocol,
hostname, port, path, slash и client ID. Частая ошибка — зарегистрировать callback
одного App, а запрос отправить с client_id другого.
Типичные ошибки
- зарегистрировать
https, а локально отправитьhttp; - перепутать порт
3000и3005; - добавить trailing slash только в одном месте;
- указать URL страницы после входа вместо технического callback;
- использовать Redirect URI другого App.
Как проверить результат
- URI есть в списке выбранного App;
- значение запроса совпадает с ним полностью;
- callback получает code и state;
- SDK возвращает пользователя на относительный путь приложения;
- production использует HTTPS и не зависит от localhost.
Почему нельзя использовать произвольный callback
Если authorization server принимал бы любой URI из запроса, злоумышленник мог бы отправить
пользователя на свой сайт и получить OAuth-ответ. Регистрация URI связывает client_id
с заранее известным местом возврата. Это не заменяет state и PKCE, но является
обязательной частью защиты flow.
Несколько Redirect URI
App может иметь несколько URI для локальной, staging и production среды. Они должны быт ь явными и принадлежать вашему приложению. Не добавляйте временный адрес «на всякий случай»: список callback является частью security configuration и со временем становится труднее контролировать.
Callback должен быть техническим
Callback обрабатывает параметры протокола, очищает URL и передаёт управление приложению.
Не смешивайте его с публичной landing page или страницей, которая не умеет обработать
code, state и OAuth error. После завершения flow пользователь может быть перенаправлен
на /dashboard или другой внутренний путь.
Диагностический порядок
- Скопируйте фактический
redirect_uriиз запроса. - Сравните его с App в кабинете.
- Проверьте
client_id. - Проверьте issuer и environment.
- Проверьте, не изменяет ли reverse proxy protocol или port.
- Повторите вход после очистки старого flow storage.
Не исправляйте mismatch добавлением wildcard, если контракт Authoriza не подтверждает такую возможность.
Как это реализовано в Authoriza
App хранит список redirectUris. Пример:
https://example.com/auth/callback
Для локальной разработки:
http://localhost:3000/auth/callback
Проверяйте протокол, hostname, port, path и завершающий /. Redirect URI относится
к конкретному App.
Чем Authoriza может быть полезна
Если вы хотите централизованно хранить разрешённые callback-адреса, Authoriza связывает Redirect URI с конкретным App и проверяет его в OAuth/OIDC flow. После проверки правил настройте URI по пошаговому руководству.