Вход с Podtur ID
Подключите свой сайт к Podtur ID через OpenID Connect. Посетитель вводит пароль на странице Podtur ID, а ваш сайт получает подтверждение входа и создаёт собственную сессию.
1. Зарегистрируйте приложение
Передайте администратору Podtur ID название приложения, его тип (серверный сайт или SPA), домен и точный HTTPS-адрес возврата. Например, https://example.com/auth/pid/callback. Для SPA также укажите точный веб-источник. Клиенты сейчас создаются вручную.
Администратор выдаст client_id. Если библиотеке серверного приложения нужен client_secret, храните его в секрете сервера. Для SPA секрет не используется.
2. Настройте OIDC-библиотеку
- Issuer
https://id.podtur.su/realms/podtur- Discovery
- Конфигурация OpenID Connect
- Поток
- Authorization Code с PKCE S256
- Scopes
openid. Добавьтеprofile, если вам нужно имя пользователя и оно разрешено для клиента.
3. Подключите кнопку
Скачайте логотип SVG и стили кнопки. Разместите файлы в публичной папке своего сайта.
<link rel="stylesheet" href="/assets/p-id-button.css">
<a class="pid-button" href="/auth/pid/start">
<img src="/assets/p-id.svg" width="26" height="26" alt="">
Войти с P ID
</a>
/auth/pid/start — маршрут вашего сайта. Пусть OIDC-библиотека создаёт одноразовые state, nonce и PKCE verifier, сохраняет их до возврата и перенаправляет браузер на страницу входа.
4. Обработайте возврат
- На
/auth/pid/callbackпроверьтеstateи обработайте отказ пользователя. - Обменяйте код через библиотеку с исходным PKCE verifier. Проверьте подпись ID-токена,
iss,aud, срок действия иnonce. - Свяжите локального пользователя с парой
issиsub. Используйте эту пару как постоянный ключ аккаунта. - Создайте сессию сайта. Для серверного сайта храните токены на сервере, а идентификатор сессии — в cookie с
SecureиHttpOnly.
5. Проверьте перед запуском
Войдите новым аккаунтом, повторите вход существующим, проверьте отмену и выход из сайта. Если подключено два сайта, проверьте вход на второй через уже открытую сессию Podtur ID.
Справка: OIDC в Keycloak · OpenID Connect Core