causal/oidc extension. Nothing changes on the Veriqa side.
Verified: TYPO3 13.4.34 +
causal/oidc 5.0.0; Telegram channel. Working: sign-in, fe_user
creation and a session, identity linked by the Veriqa sub.1. Installation
league/oauth2-client and
firebase/php-jwt.
2. Configuration
The settings live inconfig/system/settings.php under EXTENSIONS.oidc, not in the database:
The
redirect_uri is free-form in TYPO3 — unlike Drupal and Joomla, where the module dictates it.
A middleware intercepts any frontend GET carrying code/state/error in the query, so you can
register, for example, the site root.
3. The default group — without it the sign-in does not work
This is TYPO3’s main trap, and it is dangerous twice over. The extension does not create a new user who ends up in no group. Groups come either from aRoles claim — Veriqa does not issue one — or from usersDefaultGroup. So you have to create
an fe_groups record by hand and point the setting at its uid.
The other half of the trap is diagnostics. The refusal is logged at INFO, while TYPO3’s
default logger has its threshold at ERROR. From the outside it looks like this:
- the page shows a bare “Login failed! Please try again.”;
- the TYPO3 log says nothing about the reason;
- the Veriqa logs are all green: token 200, userinfo 200.
4. What the extension verifies — and what it does not
The extension does not sendnonce and does not check iss — its only replay protection is
state plus its own context cookie. For a strict RP that is weaker than Drupal’s.
oidcEndpointUserInfo is mandatory. The fallback path that reads the identity out of the
id_token carries an extension defect that raises a fatal error on PHP 8 instead of signing the
user in. Leaving the field empty is not an option.
Email and the username
TYPO3, like WordPress, does not require an email: the defaultplugin.tx_oidc.mapping.fe_users mapping does not map it at all. A sign-in through a messaging app creates a working fe_user without the synthetic .invalid addresses that Drupal and Bitrix need.
The price is the usual one: by default username is <sub>, that is telegram:123456789. A
human-readable name comes from overriding the mapping to <preferred_username>.
The identity is linked by the Veriqa sub — if the way it is composed on the Veriqa side ever
changes, previously created users stop being recognized.