Output da un sistema di autorizzazione Lambda di Gateway API - Amazon API Gateway

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Output da un sistema di autorizzazione Lambda di Gateway API

L'output di una funzione di autorizzazione Lambda è un oggetto simile a un dizionario che deve includere l'identificatore dell'entità principale (principalId) e un documento di policy (policyDocument) contenente un elenco di dichiarazioni di policy. L'output può includere anche una mappa context contenente coppie chiave-valore. Se l'API utilizza un piano di utilizzo (apiKeySource è impostato su AUTHORIZER), la funzione di autorizzazione Lambda deve restituire una delle chiavi API del piano di utilizzo come il valore della proprietà usageIdentifierKey.

Di seguito è illustrato un esempio di output.

{   "principalId": "yyyyyyyy", // The principal user identification associated with the token sent by the client. "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Allow|Deny", "Resource": "arn:aws:execute-api:{regionId}:{accountId}:{apiId}/{stage}/{httpVerb}/[{resource}/[{child-resources}]]" } ] }, "context": { "stringKey": "value", "numberKey": "1", "booleanKey": "true" }, "usageIdentifierKey": "{api-key}" }

In questo caso, una dichiarazione di policy specifica se permettere o rifiutare (Effect) al servizio di esecuzione API Gateway di richiamare (Action) il metodo API specificato (Resource). Per specificare un tipo di risorsa (metodo), è possibile usare un carattere jolly (*). Per informazioni sull'impostazione di policy valide per chiamare un'API, consulta Riferimento delle istruzioni delle policy IAM per l'esecuzione dell'API in API Gateway.

Per un ARN di metodo abilitato per le autorizzazioni, ad esempio arn:aws:execute-api:{regionId}:{accountId}:{apiId}/{stage}/{httpVerb}/[{resource}/[{child-resources}]], la lunghezza massima è 1600 byte. A causa dei valori dei parametri del percorso, la cui dimensione viene determinata al momento dell'esecuzione, l'ARN può superare il limite di lunghezza impostato. In questo caso, il client API riceverà una risposta 414 Request URI too long.

Per l'ARN di risorsa, inoltre, come illustrato nell'output della dichiarazione di policy da parte delle autorizzazioni, è attualmente previsto un limite di 512 caratteri. Per questo motivo, non devi usare un URI con un token JWT di lunghezza significativa in un URI di richiesta. Puoi invece passare senza problemi il token JWT in un'intestazione di richiesta.

Puoi accedere al valore di principalId in un modello di mappatura usando la variabile $context.authorizer.principalId. Ciò è utile se desideri passare il valore al back-end. Per ulteriori informazioni, consulta $contextVariabili per modelli di dati, autorizzatori, modelli di mappatura e registrazione degli accessi CloudWatch .

Puoi accedere al valore di stringKey, numberKey o booleanKey (ad esempio "value", "1" o "true") della mappa context in un modello di mappatura chiamando, rispettivamente, $context.authorizer.stringKey, $context.authorizer.numberKey o $context.authorizer.booleanKey. I valori restituiti sono tutti in formato stringa. Non è possibile impostare una matrice o un oggetto JSON come valore valido di una chiave nella mappa context.

È possibile usare la mappa context per restituire le credenziali memorizzate nella cache dalle autorizzazioni al back-end, usando un modello di mappatura di richiesta di integrazione. In questo modo, il back-end può offrire un'esperienza utente migliore usando le credenziali memorizzate nella cache per ridurre la necessità di accesso alle chiavi segrete e di apertura dei token di autorizzazione per ogni richiesta.

Per l'integrazione proxy Lambda, API Gateway passa l'oggetto context da un'autorizzazione Lambda direttamente alla funzione Lambda back-end come parte dell'input event. È possibile recuperare la coppia chiave/valore context nella funzione Lambda chiamando $event.requestContext.authorizer.key.

{api-key} indica una chiave API nel piano di utilizzo della fase API. Per ulteriori informazioni, consulta Piani di utilizzo e chiavi API per REST APIs in API Gateway.

Di seguito è illustrato l'output dell'autorizzazione Lambda di esempio. L'output di esempio contiene un'istruzione politica per bloccare (Deny) le chiamate al GET metodo per la dev fase di un'API (ymy8tbxw7b) di un AWS account (). 123456789012

{ "principalId": "user", "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Deny", "Resource": "arn:aws:execute-api:us-west-2:123456789012:ymy8tbxw7b/dev/GET/" } ] } }