OPT-SIG-001Decisión del bancoreguladoFirma y cabeceras

Firma de las peticiones

¿Las peticiones del TPP se firman con http-signature o con JWS?

Las opciones

  • http-signature

    Draft cavage, headers Signature y Digest, RSA-SHA256. Fue el único mecanismo hasta la 1.6.2.

  • JWS

    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.

Lado del banco
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.
Lado del TPP
Implementar ambos, ya que los bancos que no han migrado siguen con http-signature. El certificado de firma es un QSealC.
Regulación

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.

Textos citados

Ficha revisada el 19 de octubre de 2026.

Basado en la especificación STET PSD2 API 1.6.3, con licencia CC BY 3.0 FR.

La ficha tal como está almacenada
{
  "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"
}