OPT-OAU-003Bank and TPPinconsistencyOAuth2 and tokens
OpenID Connect and signed request
Does the bank implement OpenID Connect, and does it accept a signed request?
The options
OAuth2 only
No IdToken.
OpenID Connect
An IdToken on top of the tokens.
ui_localesbecomes mandatory.Signed Request Object
If the server accepts it, the parameters go in a signed JWT. Plain parameters can be sent alongside.
- In STET 1.6.3
- Bank side
- Optional for the bank. The spec sets neither the key nor the signing algorithm of the Request Object.
- TPP side
- Check
noncein the IdToken when you sent one, andauth_timewhen you sentmax_age. - Spec inconsistency
- The spec writes
max-agein one place andmax_agein another. OpenID Connect Core usesmax_age.
The entry as stored
{
"id": "OPT-OAU-003",
"edition": "1.6.3",
"chooser": "both",
"title": {
"fr": "OpenID Connect et requête signée",
"en": "OpenID Connect and signed request",
"es": "OpenID Connect y petición firmada",
"pt-br": "OpenID Connect e requisição assinada"
},
"question": {
"fr": "La banque implémente-t-elle OpenID Connect, et accepte-t-elle une requête signée ?",
"en": "Does the bank implement OpenID Connect, and does it accept a signed request?",
"es": "¿Implementa el banco OpenID Connect, y acepta una petición firmada?",
"pt-br": "O banco implementa OpenID Connect e aceita uma requisição assinada?"
},
"options": [
{
"label": {
"fr": "OAuth2 seul",
"en": "OAuth2 only",
"es": "Solo OAuth2",
"pt-br": "Só OAuth2"
},
"text": {
"fr": "Pas d'IdToken.",
"en": "No IdToken.",
"es": "Sin IdToken.",
"pt-br": "Sem IdToken."
}
},
{
"label": {
"fr": "OpenID Connect",
"en": "OpenID Connect",
"es": "OpenID Connect",
"pt-br": "OpenID Connect"
},
"text": {
"fr": "Un IdToken en plus des tokens. `ui_locales` devient obligatoire.",
"en": "An IdToken on top of the tokens. `ui_locales` becomes mandatory.",
"es": "Un IdToken además de los tokens. `ui_locales` pasa a ser obligatorio.",
"pt-br": "Um IdToken além dos tokens. `ui_locales` passa a ser obrigatório."
}
},
{
"label": {
"fr": "Request Object signé",
"en": "Signed Request Object",
"es": "Request Object firmado",
"pt-br": "Request Object assinado"
},
"text": {
"fr": "Si le serveur l'accepte, les paramètres passent dans un JWT signé. Les paramètres en clair peuvent être envoyés à côté.",
"en": "If the server accepts it, the parameters go in a signed JWT. Plain parameters can be sent alongside.",
"es": "Si el servidor lo acepta, los parámetros van en un JWT firmado. Los parámetros en claro pueden enviarse junto a él.",
"pt-br": "Se o servidor aceitar, os parâmetros vão em um JWT assinado. Os parâmetros em claro também podem ser enviados junto."
}
}
],
"stet": {
"sections": [
{
"part": "framework",
"section": "3.4.2.4",
"page": 28
}
],
"openapi": [],
"flows": [],
"changes": [],
"remark": null
},
"aspsp": {
"fr": "Optionnel pour la banque. La spec ne fixe ni la clé ni l'algorithme de signature du Request Object.",
"en": "Optional for the bank. The spec sets neither the key nor the signing algorithm of the Request Object.",
"es": "Opcional para el banco. La especificación no fija ni la clave ni el algoritmo de firma del Request Object.",
"pt-br": "Opcional para o banco. A especificação não define nem a chave nem o algoritmo de assinatura do Request Object."
},
"tpp": {
"fr": "Vérifier `nonce` dans l'IdToken quand on l'a envoyé, et `auth_time` quand on a envoyé `max_age`.",
"en": "Check `nonce` in the IdToken when you sent one, and `auth_time` when you sent `max_age`.",
"es": "Verificar `nonce` en el IdToken si se envió, y `auth_time` si se envió `max_age`.",
"pt-br": "Verificar `nonce` no IdToken quando ele tiver sido enviado, e `auth_time` quando `max_age` tiver sido enviado."
},
"regulation": null,
"note": {
"fr": "La spec écrit `max-age` à un endroit et `max_age` à un autre. OpenID Connect Core utilise `max_age`.",
"en": "The spec writes `max-age` in one place and `max_age` in another. OpenID Connect Core uses `max_age`.",
"es": "La especificación escribe `max-age` en un sitio y `max_age` en otro. OpenID Connect Core usa `max_age`.",
"pt-br": "A especificação escreve `max-age` em um lugar e `max_age` em outro. O OpenID Connect Core usa `max_age`."
},
"production": null,
"verifiedAt": "2026-10-19"
}