Вход с 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 и стили кнопки. Разместите файлы в публичной папке своего сайта.

Войти с P ID
<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. Обработайте возврат

  1. На /auth/pid/callback проверьте state и обработайте отказ пользователя.
  2. Обменяйте код через библиотеку с исходным PKCE verifier. Проверьте подпись ID-токена, iss, aud, срок действия и nonce.
  3. Свяжите локального пользователя с парой iss и sub. Используйте эту пару как постоянный ключ аккаунта.
  4. Создайте сессию сайта. Для серверного сайта храните токены на сервере, а идентификатор сессии — в cookie с Secure и HttpOnly.

5. Проверьте перед запуском

Войдите новым аккаунтом, повторите вход существующим, проверьте отмену и выход из сайта. Если подключено два сайта, проверьте вход на второй через уже открытую сессию Podtur ID.

Справка: OIDC в Keycloak · OpenID Connect Core