causal/oidc — самым свежим OIDC-клиентом из проверенных
движков. Сторона Veriqa не меняется.
Проверено: TYPO3 13.4.34 +
causal/oidc 5.0.0; канал Telegram. Работают вход, создание
fe_user и сессия, связывание идентичности по sub Veriqa.1. Установка
league/oauth2-client и
firebase/php-jwt.
2. Настройка
Настройки живут не в базе, а вconfig/system/settings.php, ключ EXTENSIONS.oidc:
redirect_uri у TYPO3 свободный — в отличие от Drupal и Joomla, где адрес навязан модулем.
Middleware перехватывает любой фронтовый GET, в query которого есть code/state/error,
поэтому зарегистрировать можно, например, корень сайта.
3. Группа по умолчанию — без неё вход не работает
Это главная засада TYPO3, и опасна она вдвойне. Нового пользователя расширение не создаёт, если он не попал ни в одну группу. Группы берутся либо из claimRoles — Veriqa такого не отдаёт, — либо из usersDefaultGroup. Значит запись
fe_groups нужно завести руками и указать её uid.
Вторая половина ловушки — диагностика. Отказ уходит в лог уровнем INFO, а дефолтный логгер
TYPO3 держит порог на ERROR. Со стороны это выглядит так:
- страница показывает голое «Login failed! Please try again.»;
- в логе TYPO3 — ни строки о причине;
- в логах Veriqa всё зелёное: token 200, userinfo 200.
4. Что расширение проверяет, а что нет
nonce расширение не отправляет и iss не сверяет — от replay его защищает только state и
собственная кука контекста. Для строгого RP это слабее, чем Drupal.
oidcEndpointUserInfo обязателен. Запасной путь «взять личность из id_token» содержит
дефект расширения, дающий на PHP 8 фатальную ошибку вместо входа. Оставлять поле пустым нельзя.
Email и имя пользователя
TYPO3, как и WordPress, не требует email: дефолтный маппингplugin.tx_oidc.mapping.fe_users его вообще не мапит. Вход через мессенджер создаёт рабочего
fe_user без синтетических .invalid-адресов, которые нужны Drupal и Битриксу.
Цена та же, что везде: по умолчанию username = <sub>, то есть telegram:123456789.
Человекочитаемое имя даёт переопределение маппинга на <preferred_username>.
Идентичность связывается по sub Veriqa — если способ его формирования на стороне Veriqa
изменится, ранее заведённые пользователи перестанут узнаваться.