Guía de firma de proveedores externos
Obtén información sobre cómo crear firmas de proveedores de pagos externos.
Para generar una firma correcta, siga las instrucciones que se documentan en el RFC 9421 especificación. Tenga en cuenta que hay aspectos de la generación de firmas que Amazon aplica a los TPP que realizan solicitudes de SP-API. Estos se documentan en las siguientes secciones.
Componentes de firma
RFC 9421 describe el proceso de comunicación de qué componentes de mensajes HTTP están firmados en una solicitud. Debe incluir los siguientes componentes del mensaje al generar una firma.
Nota
Si no se incluyen los siguientes componentes, se produce un error en la verificación de la firma. Puede agregar estos componentes en cualquier orden.
Campos HTTP (encabezados de mensajes)
Cabecera | Descripción |
---|---|
x-amz-access-token | El token de acceso LWA que se usa para realizar la solicitud. |
x-amzn-content-digest | El resumen sha-256 de la carga útil de la solicitud. Para las solicitudes sin carga útil, crea el resumen sha-256 en un vacío cadena. |
Para obtener información adicional, consulte Campos HTTP.
Componentes derivados
Component | Descripción |
---|---|
@method | El método HTTP de la solicitud. El valor debe estar en mayúsculas (por ejemplo GET , POST ). |
@query | La cadena de consulta normalizada que se define en URI e incluye los principales ? personaje.Si la solicitud no contiene ninguna consulta, debes rellenar el valor del componente con ? al crear la base de firmas mencionada en RFC 9421.El valor debe derivarse después de realizar toda la codificación necesaria, como la codificación por percentiles. Cualquier otra modificación que realice en queryString , que no se incluyen al crear la firma, provocan un error de firma. |
Para obtener información adicional, consulte Componentes derivados.
Parámetros de firma
Parámetro | Descripción |
---|---|
created | Una marca de tiempo de época en segundos. Si el created epoch indica que ha pasado más de cinco minutos desde que se recibe la solicitud, se considera que la firma ha caducado y se deniega la llamada. |
alg | Un algoritmo que se usa para firmar la base de firmas. El valor de alg debe ser PS512 . Para obtener más información, consulte Algoritmo de firma. |
Para obtener información adicional, consulte Parámetros de firma.
Advertencia
Todos los valores de los encabezados de solicitud distinguen entre mayúsculas y minúsculas. Si hay alguna discrepancia entre mayúsculas y minúsculas, se producirá un error en la verificación de la firma.
Etiqueta de firma
El RFC 9421 permite varias firmas dentro del mismo encabezado (para eliminar la ambigüedad, utilice etiquetas de firma). SP-API solo usa una firma, que se identifica con x-amzn-psd2
etiqueta de firma. Debe utilizarla en el Signature
y Signature-Input
encabezados para identificar la información relacionada con la PSD2.
Algoritmo de firma
Se genera una firma en la cadena base de firma que se crea al completar el pasos en el RFC 9421. Tras generar la cadena base de su firma, debe utilizar la clave privada asociada a su certificado electrónico de la NCA para firmar la solicitud con el PS512 algoritmo. Este algoritmo es el único que se admite actualmente para las solicitudes de SP-API.
El certificado asociado a la clave privada que utilizó en la firma debe pasarse como encabezado (x-amzn-psd2-certificate
) en su solicitud de SP-API. El certificado debe ser un Con formato PEM cadena en codificación Base64 que comienza con -----BEGIN CERTIFICATE-----
y termina con -----END CERTIFICATE-----
.
Si utiliza caracteres no permitidos en el certificado, se denegará su solicitud de SP-API. Debe usar únicamente certificados destinados a firmar solicitudes HTTP emitidas por proveedores de servicios de confianza cualificados (QTSP).
Advertencia
El certificado que utilices debe estar asociado al identificador de la organización que proporcionaste en tu registro de desarrollador. Si no coincide, se denegará tu solicitud.
Respuesta de error
Si la validación de la firma de la solicitud falla, aparece un error 403 que contiene información adicional en el cuerpo. Por ejemplo:
{
"errors": [
{
"code": "Unauthorized",
"message": "Access to requested resource is denied.",
"details": "Reason for error."
}
]
}
La siguiente es una lista de los valores posibles para details
campo:
Mensaje de error | Descripción |
---|---|
TPP certificate required but missing from request | El x-amzn-psd2-certificate falta el encabezado. |
TPP certificate has invalid format | El certificado proporcionado no tiene un formato PEM válido. |
Content Digest header required but missing from request | Falta el encabezado de solicitud x-amzn-content-digest. |
Invalid Content Digest | No se pudo verificar el resumen de contenido o utilizaste un algoritmo no compatible. Solo se admite SHA-256. |
Signature-Input header required but not presented | El Signature-Input falta el encabezado de la solicitud. |
Signature-Input header is invalid | El Signature-Input el valor del encabezado no cumple con la especificación RFC 9421. |
Request PSD2 Signature is Invalid | Firma no válida. Esto puede deberse a varias causas, como el uso de una clave privada o un certificado incorrectos o a un error tipográfico. |
Signature header is required but not presented | El Signature falta el encabezado de la solicitud. |
Ejemplo de firma
El siguiente ejemplo es una cadena base de firma que contiene todos los componentes necesarios:
"x-amz-access-token": Atza|IgEBIN...
"x-amzn-content-digest": sha-256=:fadf3qr3TAFASEG3234gADA+krdzMzYayg4YFig=:
"@method": POST
"@query": ?key2=value2&key1=value1
"@signature-params": ("x-amz-access-token" "x-amzn-content-digest" "@method" "@query");created=1720137600;alg="PS512";
El asociado Signature-Input
el encabezado es:
Signature-Input: x-amzn-psd2=("x-amz-access-token" "x-amzn-content-digest" "@method" "@query");created=1720137600;alg="PS512"
El siguiente ejemplo es un encabezado de firma que tiene Signature
etiqueta:
Signature: x-amzn-psd2=:cyqStwls2k3Xs8SSzDvDhxWEc_P0dNxV5I6Tp... :
Updated 27 days ago