Всё на этой странице — про локальную проверку. В продакшне, где у Veriqa настоящий домен и
валидный сертификат, ни одной из этих сложностей нет: боевая схема проще локальной.
Сертификат
Самоподписанный сертификат придётся смонтировать внутрь каждого контейнера и выполнитьupdate-ca-certificates — иначе PHP-cURL рвёт обмен кода на токены. В проде этого шага нет
вовсе.
Отдельная засада: антивирус, перехватывающий TLS, подменяет самоподписанный сертификат своим
и показывает заглушку «переход на домен с недоверенным сертификатом». Ссылка «продолжить» в такой
заглушке теряет query string — то есть весь OIDC-запрос, — поэтому пройти её нельзя ни мышью, ни
программно. Серверные вызовы это не затрагивает: PHP в контейнере ходит по смонтированному CA и
проблемы не видит.
Рабочий обход, не трогающий настройки безопасности машины: поднять два HTTPS-эндпоинта —
один со своим сертификатом для контейнеров, другой с dev-сертификатом, уже доверенным в системе,
для браузера человека.
Адрес issuer
Три правила:- issuer только по https. На
http://localhost:5200ядро отвечает отказом даже в Development. Обратите внимание:redirect_uriпоhttpпри этом принимается — ограничение касается именно адреса issuer; - адрес должен резолвиться одинаково из контейнера и с хоста, иначе
issв discovery разъедется с тем, что видит браузер; - приватный адрес блокируется клиентами.
host.docker.internal— приватная сеть, и почти каждая система защищается от обращений туда собственным флагом: WordPress режет такие запросы черезwp_safe_remote_post()(лечится настройкойallow_internal_idp), Drupal — флагомallow_private_issuer, Nextcloud —allow_local_remote_servers, Discourse —allowed_internal_hosts, Moodle —curlsecurityblockedhosts. В проде адрес публичный, и все эти флаги не нужны.
Мелочи окружения
Почта
Для канала Email локально удобно поднять почтовый приёмник вместо настоящего SMTP: письма никуда не уходят, а ссылку из письма видно в его веб-интерфейсе. Ещё одно: у канала Email есть штатный rate limit — при отладке несколькими запросами подряд вы увидите429. Закладывайте паузу.
Чего локальный стенд не проверяет
- доставляемость почты — SPF, DKIM, DMARC и репутацию домена локальный приёмник не проверяет;
- поведение вендорских платформ — Shopify и Wix ходят к Veriqa снаружи, им нужен её публичный HTTPS-адрес, см. SaaS-конструкторы;
- скорость под нагрузкой — локальные цифры отклика ничего не говорят о проде.