OPT-SIG-001Choix de la banqueréglementéSignature et en-têtes

Signature des requêtes

Les requêtes du TPP sont-elles signées en http-signature ou en JWS ?

Les options

  • http-signature

    Draft cavage, en-têtes Signature et Digest, RSA-SHA256. C'était le seul mécanisme jusqu'à la 1.6.2.

  • JWS

    Profil JWS d'Open Banking Europe, en-tête X-JWS-Signature, algorithme choisi parmi ceux de la RFC 7518 et de l'ETSI TS 119 312. STET recommande fortement d'y passer.

Côté banque
La signature reste obligatoire : une requête sans signature ou avec une signature invalide est rejetée en 400. Seul le mécanisme se choisit. Dans l'OpenAPI 1.6.3, les deux en-têtes sont required: false, ce qui traduit le choix entre les deux et ne rend pas la signature facultative.
Côté TPP
Implémenter les deux, puisque les banques qui n'ont pas migré restent en http-signature. Le certificat de signature est un QSealC.
Réglementation

Les RTS demandent un certificat qualifié, QSealC ou QWAC (art. 34(1)). STET exige les deux : le QWAC pour le mTLS, le QSealC pour la signature.

Textes cités

Fiche vérifiée le 19 octobre 2026.

D'après la spécification STET PSD2 API 1.6.3, sous licence CC BY 3.0 FR.

La fiche telle qu'elle est stockée
{
  "id": "OPT-SIG-001",
  "edition": "1.6.3",
  "chooser": "aspsp",
  "title": {
    "fr": "Signature des requêtes",
    "en": "Request signing",
    "es": "Firma de las peticiones",
    "pt-br": "Assinatura das requisições"
  },
  "question": {
    "fr": "Les requêtes du TPP sont-elles signées en http-signature ou en JWS ?",
    "en": "Are TPP requests signed with http-signature or with JWS?",
    "es": "¿Las peticiones del TPP se firman con http-signature o con JWS?",
    "pt-br": "As requisições do TPP são assinadas com http-signature ou com JWS?"
  },
  "options": [
    {
      "label": {
        "fr": "http-signature",
        "en": "http-signature",
        "es": "http-signature",
        "pt-br": "http-signature"
      },
      "text": {
        "fr": "Draft cavage, en-têtes `Signature` et `Digest`, RSA-SHA256. C'était le seul mécanisme jusqu'à la 1.6.2.",
        "en": "The Cavage draft, `Signature` and `Digest` headers, RSA-SHA256. It was the only mechanism up to 1.6.2.",
        "es": "Draft cavage, headers `Signature` y `Digest`, RSA-SHA256. Fue el único mecanismo hasta la 1.6.2.",
        "pt-br": "Draft cavage, headers `Signature` e `Digest`, RSA-SHA256. Era o único mecanismo até a 1.6.2."
      }
    },
    {
      "label": {
        "fr": "JWS",
        "en": "JWS",
        "es": "JWS",
        "pt-br": "JWS"
      },
      "text": {
        "fr": "Profil JWS d'Open Banking Europe, en-tête `X-JWS-Signature`, algorithme choisi parmi ceux de la RFC 7518 et de l'ETSI TS 119 312. STET recommande fortement d'y passer.",
        "en": "The Open Banking Europe JWS profile, `X-JWS-Signature` header, with the algorithm chosen from those of RFC 7518 and ETSI TS 119 312. STET strongly recommends moving to it.",
        "es": "Perfil JWS de Open Banking Europe, header `X-JWS-Signature`, algoritmo elegido entre los de la RFC 7518 y la ETSI TS 119 312. STET recomienda encarecidamente migrar a él.",
        "pt-br": "Perfil JWS da Open Banking Europe, header `X-JWS-Signature`, algoritmo escolhido entre os da RFC 7518 e da ETSI TS 119 312. A STET recomenda fortemente migrar para ele."
      }
    }
  ],
  "stet": {
    "sections": [
      {
        "part": "framework",
        "section": "3.5.1",
        "page": 53
      },
      {
        "part": "framework",
        "section": "3.5.2",
        "page": 55
      }
    ],
    "openapi": [
      "SignatureHeader",
      "JwSignatureHeader"
    ],
    "flows": [],
    "changes": [
      408
    ],
    "remark": null
  },
  "aspsp": {
    "fr": "La signature reste obligatoire : une requête sans signature ou avec une signature invalide est rejetée en 400. Seul le mécanisme se choisit. Dans l'OpenAPI 1.6.3, les deux en-têtes sont `required: false`, ce qui traduit le choix entre les deux et ne rend pas la signature facultative.",
    "en": "Signing remains mandatory: a request with no signature or with an invalid one is rejected with 400. Only the mechanism is a choice. In the 1.6.3 OpenAPI, both headers are `required: false`, which reflects the choice between the two and does not make signing optional.",
    "es": "La firma sigue siendo obligatoria: una petición sin firma o con una firma no válida se rechaza con un 400. Solo se elige el mecanismo. En el OpenAPI 1.6.3, los dos headers son `required: false`, lo que refleja la elección entre ambos y no hace opcional la firma.",
    "pt-br": "A assinatura continua obrigatória: uma requisição sem assinatura ou com assinatura inválida é rejeitada com 400. Só o mecanismo é escolhido. No OpenAPI 1.6.3, os dois headers são `required: false`, o que reflete a escolha entre um e outro e não torna a assinatura opcional."
  },
  "tpp": {
    "fr": "Implémenter les deux, puisque les banques qui n'ont pas migré restent en http-signature. Le certificat de signature est un QSealC.",
    "en": "Implement both, since banks that have not migrated stay on http-signature. The signing certificate is a QSealC.",
    "es": "Implementar ambos, ya que los bancos que no han migrado siguen con http-signature. El certificado de firma es un QSealC.",
    "pt-br": "Implementar os dois, já que os bancos que não migraram continuam com http-signature. O certificado de assinatura é um QSealC."
  },
  "regulation": {
    "text": {
      "fr": "Les RTS demandent un certificat qualifié, QSealC ou QWAC (art. 34(1)). STET exige les deux : le QWAC pour le mTLS, le QSealC pour la signature.",
      "en": "The RTS require a qualified certificate, QSealC or QWAC (Article 34(1)). STET requires both: the QWAC for mTLS, the QSealC for signing.",
      "es": "Las RTS exigen un certificado cualificado, QSealC o QWAC (art. 34(1)). STET exige los dos: el QWAC para el mTLS y el QSealC para la firma.",
      "pt-br": "As RTS exigem um certificado qualificado, QSealC ou QWAC (art. 34(1)). A STET exige os dois: o QWAC para o mTLS e o QSealC para a assinatura."
    },
    "sources": [
      {
        "act": "rts",
        "ref": "art. 34(1)"
      }
    ]
  },
  "note": null,
  "production": null,
  "verifiedAt": "2026-10-19"
}