Guida alla firma del fornitore terzo
Scopri come creare firme di fornitori di servizi di pagamento di terze parti.
Per generare una firma corretta, segui le istruzioni documentate nella CODICE RFC 9421 specificazione. Tieni presente che ci sono aspetti della generazione di firme che Amazon applica ai TPP che effettuano richieste SP-API. Questi sono documentati nelle seguenti sezioni.
Componenti firmati
CODICE RFC 9421 descrive il processo di comunicazione dei componenti del messaggio HTTP firmati in una richiesta. È necessario includere i seguenti componenti del messaggio quando si genera una firma.
Nota
La mancata inclusione dei seguenti componenti comporta un errore di verifica della firma. È possibile aggiungere questi componenti in qualsiasi ordine.
Campi HTTP (intestazioni dei messaggi)
Intestazione | Descrizione |
---|---|
x-amz-access-token | Il token di accesso LWA utilizzato per effettuare la richiesta. |
x-amzn-content-digest | Il digest sha-256 del payload della richiesta. Per le richieste senza payload, crea il digest sha-256 su un vuoto corda. |
Per ulteriori informazioni, fare riferimento a Campi HTTP.
Componenti derivati
Component | Descrizione |
---|---|
@method | Il metodo HTTP della richiesta. Il valore deve essere in maiuscolo (ad esempio GET , POST ). |
@query | La stringa di query normalizzata definita da URI e include i principali ? personaggio.Se la richiesta non contiene una query, è necessario compilare il valore del componente con ? quando crei la base delle firme menzionata in CODICE RFC 9421.Il valore deve essere derivato dopo aver eseguito tutte le codifiche necessarie, ad esempio Percentile-Encoding. Eventuali ulteriori modifiche apportate a queryString , che non sono inclusi nella creazione della firma, causano l'errore della firma. |
Per ulteriori informazioni, fare riferimento a Componenti derivati.
Parametri della firma
Parametro | Descrizione |
---|---|
created | Un timestamp dell'epoca in secondi. Se created epoch indica un tempo superiore a cinque minuti al momento della ricezione della richiesta, la firma è considerata scaduta e la chiamata viene negata. |
alg | Un algoritmo utilizzato per firmare la base della firma. Il valore per alg deve essere PS512 . Per ulteriori dettagli, fare riferimento a Algoritmo di firma. |
Per ulteriori informazioni, fare riferimento a Parametri della firma.
Attenzione
Tutti i valori dell'intestazione della richiesta sono sensibili alle maiuscole. In caso di mancata corrispondenza tra maiuscole e minuscole, la verifica della firma ha esito negativo.
Etichetta firmata
RFC 9421 consente più firme all'interno della stessa intestazione (per disambiguare, utilizzare etichette con firma). SP-API utilizza solo una firma, identificata dal x-amzn-psd2
etichetta firmata. È necessario utilizzarlo in Signature
e Signature-Input
intestazioni per identificare le informazioni relative alla PSD2.
Algoritmo di firma
Una firma viene generata sulla stringa di base della firma creata quando si completa passaggi in RFC 9421. Dopo aver generato la stringa di base della firma, è necessario utilizzare la chiave privata associata al certificato NCA elettronico per firmare la richiesta con PS512 algoritmo. Questo algoritmo è l'unico attualmente supportato per le richieste SP-API.
Il certificato associato alla chiave privata utilizzata nella firma deve essere passato come intestazione (x-amzn-psd2-certificate
) nella tua richiesta SP-API. Il certificato deve essere un Formato PEM stringa in codifica Base64 che inizia con -----BEGIN CERTIFICATE-----
e termina con -----END CERTIFICATE-----
.
Se si utilizzano caratteri non consentiti nel certificato, la richiesta SP-API viene rifiutata. È necessario utilizzare solo certificati destinati a firmare le richieste HTTP emesse da Qualified Trust Service Provider (QTSP).
Attenzione
Il certificato utilizzato deve essere associato all'identificativo dell'organizzazione fornito nella registrazione dello sviluppatore. In caso di mancata corrispondenza, la richiesta viene respinta.
Risposta all'errore
Se la convalida della firma della richiesta non riesce, viene visualizzato un errore 403 che contiene informazioni aggiuntive nel corpo. Ad esempio:
{
"errors": [
{
"code": "Unauthorized",
"message": "Access to requested resource is denied.",
"details": "Reason for error."
}
]
}
Di seguito è riportato un elenco di valori possibili per details
campo:
Messaggio di errore | Descrizione |
---|---|
TPP certificate required but missing from request | Le x-amzn-psd2-certificate l'intestazione è mancante. |
TPP certificate has invalid format | Il certificato fornito non è in formato PEM valido. |
Content Digest header required but missing from request | Manca l'intestazione della richiesta x-amzn-content-digest. |
Invalid Content Digest | Il content digest non può essere verificato oppure hai utilizzato un algoritmo non supportato. È supportato solo SHA-256. |
Signature-Input header required but not presented | Le Signature-Input manca l'intestazione della richiesta. |
Signature-Input header is invalid | Le Signature-Input il valore dell'intestazione non è conforme alla specifica RFC 9421. |
Request PSD2 Signature is Invalid | Firma non valida. Ciò può avere diverse cause, ad esempio l'uso della chiave privata o del certificato errati o un errore di battitura. |
Signature header is required but not presented | Le Signature manca l'intestazione della richiesta. |
Firma di esempio
L'esempio seguente è una stringa di base della firma che contiene tutti i componenti richiesti:
"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";
L'associato Signature-Input
l'intestazione è:
Signature-Input: x-amzn-psd2=("x-amz-access-token" "x-amzn-content-digest" "@method" "@query");created=1720137600;alg="PS512"
L'esempio seguente è un'intestazione della firma con Signature
etichetta:
Signature: x-amzn-psd2=:cyqStwls2k3Xs8SSzDvDhxWEc_P0dNxV5I6Tp... :
Updated 27 days ago