Skip to main content
Сайт впускает человека через мессенджер так же, как через любого провайдера OpenID Connect: перенаправляет к издателю, человек подтверждает вход в мессенджере, и браузер возвращается с токенами. Примеры ниже показывают обе стороны такого входа. Всё лежит в samples/ репозитория (veriqa.app/source) под лицензией MIT.
Veriqa живёт на стороне издателя. Сам сайт остаётся обычной проверяющей стороной OIDC: в примере клиента нет пакета Veriqa, и с любым совместимым провайдером он выглядел бы так же.

Примеры

Запуск пары

Первым запускается издатель — иначе клиент не пройдёт discovery.
1

Включите канал у издателя

Издатель поставляется с "Enabled": false у всех каналов, и без включённого канала страница входа отвечает no_channels_available. Включите канал в samples/dotnet/inproc/login/appsettings.Development.json и дайте ему учётные данные — быстрее всего токен бота, см. Настройка каналов.
2

Запустите издателя

Корневой маршрут отвечает Hello! и больше ничего: у издателя нет страницы для вошедшего пользователя, вход начинается и заканчивается у клиента.
3

Запустите клиента и войдите

Откройте https://localhost:7020/. Анонимный посетитель сразу попадает на страницу входа Veriqa; после подтверждения в мессенджере страница показывает Hello, {name}!.
Обоим проектам нужен доверенный локальный HTTPS-сертификат (dotnet dev-certs https --trust). Открывайте клиента по адресу https: вход, начатый по обычному HTTP, отправит redirect_uri, которого издатель не знает.

Почему паре не нужна настройка

Издатель уже регистрирует ровно того клиента, которым является второй проект, поэтому три значения совпадают из коробки: redirect_uri сравнивается буквально, без масок: поменяли порт клиента — поменяйте и AllowedRedirectUris. У my-app нет ClientSecret, поэтому это публичный клиент, и от него требуется PKCE (S256).

Что ещё показывает клиент

  • Отмена на странице Veriqa возвращает error=access_denied; клиент через AccessDeniedPath превращает её в простую страницу «вход отменён».
  • Любой другой неудачный возврат уходит через OnRemoteFailure на страницу «вход не удался»; текст ошибки пишется в лог, а не показывается пользователю.
  • GET /signout сбрасывает только локальную cookie. Эндпоинта завершения сессии у Veriqa нет, поэтому федеративного выхода тоже нет — см. Известные ограничения.

См. также