OPT-OAU-006Escolha do bancoincoerênciaOAuth2 e tokens
Refresh token e rotação
O banco emite um refresh token e faz a rotação dele?
As opções
Sem refresh token
refresh_tokené opcional nas respostas de authorization code, OpenID Connect e CIBA. Ele nunca existe em client credentials nem na confirmação PISP.Sem rotação
O mesmo refresh token vale até ser revogado.
Com rotação
A resposta ao refresh pode conter um novo refresh token, que substitui o anterior.
- Lado do banco
- Um refresh token revogado retorna 400. O scope pode ser especificado no refresh (
aispoucbpii), semextended_transaction_history. - Lado do TPP
- Guardar o novo refresh token, se houver, ou então manter o anterior. Sem refresh token, refazer uma SCA quando o access token expirar.
- Incoerência da spec
- A especificação escreve o erro
invalid grant, com espaço, onde a RFC 6749 dizinvalid_grant.
A ficha como está armazenada
{
"id": "OPT-OAU-006",
"edition": "1.6.3",
"chooser": "aspsp",
"title": {
"fr": "Refresh token et rotation",
"en": "Refresh token and rotation",
"es": "Refresh token y rotación",
"pt-br": "Refresh token e rotação"
},
"question": {
"fr": "La banque émet-elle un refresh token, et le fait-elle tourner ?",
"en": "Does the bank issue a refresh token, and does it rotate it?",
"es": "¿Emite el banco un refresh token, y lo rota?",
"pt-br": "O banco emite um refresh token e faz a rotação dele?"
},
"options": [
{
"label": {
"fr": "Pas de refresh token",
"en": "No refresh token",
"es": "Sin refresh token",
"pt-br": "Sem refresh token"
},
"text": {
"fr": "`refresh_token` est optionnel dans les réponses authorization code, OpenID Connect et CIBA. Il n'existe jamais en client credentials ni pour la confirmation PISP.",
"en": "`refresh_token` is optional in authorization code, OpenID Connect and CIBA responses. It never exists with client credentials or for the PISP confirmation.",
"es": "`refresh_token` es opcional en las respuestas authorization code, OpenID Connect y CIBA. Nunca existe en client credentials ni para la confirmación PISP.",
"pt-br": "`refresh_token` é opcional nas respostas de authorization code, OpenID Connect e CIBA. Ele nunca existe em client credentials nem na confirmação PISP."
}
},
{
"label": {
"fr": "Sans rotation",
"en": "Without rotation",
"es": "Sin rotación",
"pt-br": "Sem rotação"
},
"text": {
"fr": "Le même refresh token sert jusqu'à sa révocation.",
"en": "The same refresh token works until it is revoked.",
"es": "El mismo refresh token sirve hasta que se revoca.",
"pt-br": "O mesmo refresh token vale até ser revogado."
}
},
{
"label": {
"fr": "Avec rotation",
"en": "With rotation",
"es": "Con rotación",
"pt-br": "Com rotação"
},
"text": {
"fr": "La réponse au refresh peut contenir un nouveau refresh token, qui remplace l'ancien.",
"en": "The refresh response can contain a new refresh token, which replaces the old one.",
"es": "La respuesta al refresh puede contener un nuevo refresh token, que sustituye al anterior.",
"pt-br": "A resposta ao refresh pode conter um novo refresh token, que substitui o anterior."
}
}
],
"stet": {
"sections": [
{
"part": "framework",
"section": "3.4.2.9",
"page": 41
}
],
"openapi": [],
"flows": [],
"changes": [],
"remark": null
},
"aspsp": {
"fr": "Un refresh token révoqué renvoie 400. Le scope peut être précisé au refresh (`aisp` ou `cbpii`), sans `extended_transaction_history`.",
"en": "A revoked refresh token returns 400. The scope can be specified on refresh (`aisp` or `cbpii`), without `extended_transaction_history`.",
"es": "Un refresh token revocado devuelve 400. El scope puede indicarse en el refresh (`aisp` o `cbpii`), sin `extended_transaction_history`.",
"pt-br": "Um refresh token revogado retorna 400. O scope pode ser especificado no refresh (`aisp` ou `cbpii`), sem `extended_transaction_history`."
},
"tpp": {
"fr": "Garder le nouveau refresh token s'il y en a un, sinon conserver l'ancien. Sans refresh token, relancer une SCA à l'expiration de l'access token.",
"en": "Keep the new refresh token if there is one, otherwise keep the old one. Without a refresh token, start a new SCA when the access token expires.",
"es": "Guardar el nuevo refresh token si lo hay; si no, conservar el anterior. Sin refresh token, lanzar una nueva SCA cuando expire el access token.",
"pt-br": "Guardar o novo refresh token, se houver, ou então manter o anterior. Sem refresh token, refazer uma SCA quando o access token expirar."
},
"regulation": null,
"note": {
"fr": "La spec écrit l'erreur `invalid grant`, avec une espace, là où la RFC 6749 dit `invalid_grant`.",
"en": "The spec writes the error as `invalid grant`, with a space, where RFC 6749 says `invalid_grant`.",
"es": "La especificación escribe el error `invalid grant`, con un espacio, donde la RFC 6749 dice `invalid_grant`.",
"pt-br": "A especificação escreve o erro `invalid grant`, com espaço, onde a RFC 6749 diz `invalid_grant`."
},
"production": null,
"verifiedAt": "2026-10-19"
}