OPT-OAU-002Escolha do bancoincoerênciaOAuth2 e tokens
PKCE obrigatório ou não
O servidor de autorização exige PKCE?
As opções
Não exigido
O código de autorização basta.
Exigido
code_challengeecode_verifierpassam a ser obrigatórios. Métodoplainpor padrão, ouS256.
- Lado do banco
- Se PKCE for exigido, recusar uma requisição sem
code_challenge. A especificação não impõeS256e mantémplaincomo valor padrão. - Lado do TPP
- O protocolo não diz ao TPP se PKCE é exigido. É preciso ver isso na documentação do banco. Preferir
S256quando o banco aceitar. - Incoerência da spec
- A verificação do
code_verifierno token endpoint está escrita sem condição, ao contrário da verificação em/authorize.
A ficha como está armazenada
{
"id": "OPT-OAU-002",
"edition": "1.6.3",
"chooser": "aspsp",
"title": {
"fr": "PKCE exigé ou non",
"en": "PKCE required or not",
"es": "PKCE obligatorio o no",
"pt-br": "PKCE obrigatório ou não"
},
"question": {
"fr": "Le serveur d'autorisation exige-t-il PKCE ?",
"en": "Does the authorization server require PKCE?",
"es": "¿Exige PKCE el servidor de autorización?",
"pt-br": "O servidor de autorização exige PKCE?"
},
"options": [
{
"label": {
"fr": "Non exigé",
"en": "Not required",
"es": "No exigido",
"pt-br": "Não exigido"
},
"text": {
"fr": "Le code d'autorisation suffit.",
"en": "The authorization code is enough.",
"es": "Basta con el código de autorización.",
"pt-br": "O código de autorização basta."
}
},
{
"label": {
"fr": "Exigé",
"en": "Required",
"es": "Exigido",
"pt-br": "Exigido"
},
"text": {
"fr": "`code_challenge` et `code_verifier` deviennent obligatoires. Méthode `plain` par défaut, ou `S256`.",
"en": "`code_challenge` and `code_verifier` become mandatory. The method is `plain` by default, or `S256`.",
"es": "`code_challenge` y `code_verifier` pasan a ser obligatorios. Método `plain` por defecto, o `S256`.",
"pt-br": "`code_challenge` e `code_verifier` passam a ser obrigatórios. Método `plain` por padrão, ou `S256`."
}
}
],
"stet": {
"sections": [
{
"part": "framework",
"section": "3.4.2.3",
"page": 25
}
],
"openapi": [],
"flows": [],
"changes": [],
"remark": null
},
"aspsp": {
"fr": "Si PKCE est exigé, refuser une requête sans `code_challenge`. La spec n'impose pas `S256` et garde `plain` comme valeur par défaut.",
"en": "If PKCE is required, reject a request without `code_challenge`. The spec does not mandate `S256` and keeps `plain` as the default value.",
"es": "Si se exige PKCE, rechazar toda petición sin `code_challenge`. La especificación no impone `S256` y mantiene `plain` como valor por defecto.",
"pt-br": "Se PKCE for exigido, recusar uma requisição sem `code_challenge`. A especificação não impõe `S256` e mantém `plain` como valor padrão."
},
"tpp": {
"fr": "Le protocole ne dit pas au TPP si PKCE est exigé, il faut le lire dans la documentation de la banque. Préférer `S256` quand la banque l'accepte.",
"en": "The protocol does not tell the TPP whether PKCE is required. Check the bank's documentation. Prefer `S256` when the bank accepts it.",
"es": "El protocolo no le dice al TPP si se exige PKCE: hay que consultarlo en la documentación del banco. Preferir `S256` cuando el banco lo acepte.",
"pt-br": "O protocolo não diz ao TPP se PKCE é exigido. É preciso ver isso na documentação do banco. Preferir `S256` quando o banco aceitar."
},
"regulation": null,
"note": {
"fr": "La vérification du `code_verifier` au token endpoint est écrite sans condition, contrairement à celle de `/authorize`.",
"en": "The `code_verifier` check at the token endpoint is written without a condition, unlike the one at `/authorize`.",
"es": "La verificación del `code_verifier` en el token endpoint está redactada sin condición, a diferencia de la de `/authorize`.",
"pt-br": "A verificação do `code_verifier` no token endpoint está escrita sem condição, ao contrário da verificação em `/authorize`."
},
"production": null,
"verifiedAt": "2026-10-19"
}