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à.
Usa gli API autorizzatori Gateway Lambda
Usa un autorizzatore Lambda (precedentemente noto come autorizzatore personalizzato) per controllare l'accesso al tuo. API Quando un client richiede il tuo API metodo, API Gateway chiama l'autorizzatore Lambda. L'autorizzatore Lambda accetta l'identità del chiamante come input e restituisce una IAM policy come output.
Usa un autorizzatore Lambda per implementare uno schema di autorizzazione personalizzato. Lo schema può utilizzare i parametri di richiesta per determinare l'identità del chiamante o utilizzare una strategia di autenticazione con token portatore come o. OAuth SAML Crea un autorizzatore Lambda nella REST API console API Gateway, utilizzando o un. AWS CLI AWS SDK
Flusso di lavoro di autorizzazione Lambda Authorizer
Il diagramma seguente mostra il flusso di lavoro di autorizzazione per un autorizzatore Lambda.
APIFlusso di lavoro di autorizzazione Gateway Lambda
-
Il client chiama un metodo su un API GatewayAPI, passando un token bearer o richiedendo parametri.
-
APIIl gateway verifica se la richiesta del metodo è configurata con un autorizzatore Lambda. In tal caso, API Gateway chiama la funzione Lambda.
-
La funzione Lambda autentica il chiamante. La funzione può autenticarsi nei seguenti modi:
-
Chiamando un OAuth provider per ottenere un token di OAuth accesso.
-
Chiamando un SAML provider per ottenere un'SAMLaffermazione.
-
Generando una IAM politica basata sui valori dei parametri di richiesta.
-
Recuperando le credenziali da un database.
-
-
La funzione Lambda restituisce una IAM policy e un identificatore principale. Se la funzione Lambda non restituisce tali informazioni, la chiamata ha esito negativo.
-
APIGateway valuta la politica. IAM
-
Se l'accesso viene negato, API Gateway restituisce un codice di HTTP stato adeguato, ad esempio
403 ACCESS_DENIED
. -
Se l'accesso è consentito, API Gateway richiama il metodo.
Se abiliti la memorizzazione nella cache delle autorizzazioni, API Gateway memorizza nella cache la policy in modo che la funzione di autorizzazione Lambda non venga richiamata nuovamente.
-
È possibile personalizzare le risposte o il gateway403
ACCESS_DENIED
. 401 UNAUTHORIZED
Per ulteriori informazioni, consulta Risposte gateway per REST APIs in API Gateway.
Scelta di un tipo di autorizzatore Lambda
Esistono due tipi di autorizzazioni Lambda:
- Richiedi l'autorizzazione Lambda basata su parametri (authorizer)
REQUEST
-
Un
REQUEST
autorizzatore riceve l'identità del chiamante in una combinazione di intestazioni, parametri della stringa di query e variabili. stageVariables$context È possibile utilizzare un programma diREQUEST
autorizzazione per creare politiche dettagliate basate sulle informazioni provenienti da più fonti di identità, come le variabili e di contesto.$context.path
$context.httpMethod
Se si attiva la memorizzazione nella cache delle autorizzazioni per un
REQUEST
autorizzatore, API Gateway verifica che tutte le fonti di identità specificate siano presenti nella richiesta. Se una fonte di identificazione specificata è mancante, nulla o vuota, API Gateway restituisce una401 Unauthorized
HTTP risposta senza chiamare la funzione di autorizzazione Lambda. Quando vengono definite più fonti di identità, queste vengono tutte utilizzate per derivare la chiave della cache dell'autorizzatore, mantenendo l'ordine. È possibile definire una chiave di cache dettagliata utilizzando più fonti di identità.Se modificate una qualsiasi delle parti chiave della cache e ridistribuite la vostraAPI, l'autorizzatore scarta il documento di policy memorizzato nella cache e ne genera uno nuovo.
Se disattivi la memorizzazione nella cache delle autorizzazioni per un
REQUEST
autorizzatore, API Gateway passa direttamente la richiesta alla funzione Lambda. - Autorizzatore Lambda basato su token (autorizzatore)
TOKEN
-
Un
TOKEN
autorizzatore riceve l'identità del chiamante in un token portante, ad esempio un Web Token () o un JSON token. JWT OAuthSe si attiva la memorizzazione nella cache delle autorizzazioni per un
TOKEN
autorizzatore, il nome dell'intestazione specificato nella fonte del token diventa la chiave della cache.Inoltre, puoi utilizzare la convalida dei token per inserire una dichiarazione. RegEx APIGateway esegue la convalida iniziale del token di input rispetto a questa espressione e richiama la funzione di autorizzazione Lambda in caso di convalida riuscita. Questo aiuta a ridurre le chiamate al tuo. API
La
IdentityValidationExpression
proprietà è supportata solo perTOKEN
gli autorizzatori. Per ulteriori informazioni, consulta x-amazon-apigateway-authorizer oggetto.
Nota
Ti consigliamo di utilizzare un REQUEST
autorizzatore per controllare l'accesso al tuo. API È possibile controllare l'accesso alla propria identità in API base a più fonti di identità quando si utilizza un REQUEST
autorizzatore, rispetto a un'unica fonte di identità quando si utilizza un TOKEN
autorizzatore. Inoltre, puoi separare le chiavi della cache utilizzando più fonti di identità per un REQUEST
autorizzatore.
Esempio di funzione Lambda REQUEST
dell'autorizzatore
Il codice di esempio seguente crea una funzione di autorizzazione Lambda che consente una richiesta se l'HeaderAuth1
intestazione, il parametro di QueryString1
query e la variabile stage forniti dal client corrispondono StageVar1
tutti ai valori specificati di, e, rispettivamente. headerValue1
queryValue1
stageValue1
In questo esempio, la funzione di autorizzazione Lambda controlla i parametri di input e si comporta nel modo seguente:
-
Se tutti i valori dei parametri richiesti corrispondono ai valori previsti, la funzione di autorizzazione restituisce una
200 OK
HTTP risposta e una IAM politica simili alle seguenti e la richiesta del metodo ha esito positivo:{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Allow", "Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/" } ] }
-
In caso contrario, la funzione di autorizzazione restituisce una
401 Unauthorized
HTTP risposta e la richiesta del metodo ha esito negativo.
Oltre a restituire una IAM policy, la funzione di autorizzazione Lambda deve restituire anche l'identificatore principale del chiamante. Facoltativamente, può restituire un context
oggetto contenente informazioni aggiuntive che possono essere passate al backend di integrazione. Per ulteriori informazioni, consulta Output da un autorizzatore API Gateway Lambda.
Nel codice di produzione, potrebbe essere necessario autenticare l'utente prima di concedere l'autorizzazione. È possibile aggiungere la logica di autenticazione nella funzione Lambda chiamando un provider di autenticazione come indicato nella documentazione relativa a tale provider.
Esempio di funzione Lambda TOKEN
dell'autorizzatore
Il codice di esempio seguente crea una funzione di autorizzazione TOKEN
Lambda che consente a un chiamante di richiamare un metodo se il valore del token fornito dal client è. allow
Al chiamante non è consentito richiamare la richiesta se il valore del token è. deny
Se il valore del token è unauthorized
o è una stringa vuota, la funzione di autorizzazione restituisce una risposta. 401 UNAUTHORIZED
In questo esempio, quando API riceve una richiesta di metodo, API Gateway passa il token di origine a questa funzione di autorizzazione Lambda nell'attributo. event.authorizationToken
La funzione di autorizzazione Lambda legge il token e si comporta nel modo seguente:
-
Se il valore del token è
allow
, la funzione di autorizzazione restituisce una200 OK
HTTP risposta e una IAM politica simili alle seguenti e la richiesta del metodo ha esito positivo:{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Allow", "Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/" } ] }
-
Se il valore del token è
deny
, la funzione di autorizzazione restituisce una200 OK
HTTP risposta e unaDeny
IAM politica simili alle seguenti e la richiesta del metodo ha esito negativo:{ "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Deny", "Resource": "arn:aws:execute-api:us-east-1:123456789012:ivdtdhp7b5/ESTestInvoke-stage/GET/" } ] }
Nota
Al di fuori dell'ambiente di test, API Gateway restituisce una
403 Forbidden
HTTP risposta e la richiesta del metodo ha esito negativo. -
Se il valore del token è
unauthorized
o è una stringa vuota, la funzione di autorizzazione restituisce una401 Unauthorized
HTTP risposta e la chiamata al metodo ha esito negativo. -
Se il token ha un valore diverso dai precedenti, il client riceve una risposta
500 Invalid token
e la chiamata al metodo ha esito negativo.
Oltre a restituire una IAM policy, la funzione di autorizzazione Lambda deve restituire anche l'identificatore principale del chiamante. Facoltativamente, può restituire un context
oggetto contenente informazioni aggiuntive che possono essere passate al backend di integrazione. Per ulteriori informazioni, consulta Output da un autorizzatore API Gateway Lambda.
Nel codice di produzione, potrebbe essere necessario autenticare l'utente prima di concedere l'autorizzazione. È possibile aggiungere la logica di autenticazione nella funzione Lambda chiamando un provider di autenticazione come indicato nella documentazione relativa a tale provider.
Esempi aggiuntivi di funzioni di autorizzazione Lambda
L'elenco seguente mostra altri esempi di funzioni di autorizzazione Lambda. Puoi creare una funzione Lambda nello stesso account, o in un account diverso, da dove hai creato il tuo. API
Per l'esempio precedente di funzioni Lambda, puoi utilizzare le funzioni integrate AWSLambdaBasicExecutionRole, poiché queste funzioni non chiamano altri AWS servizi. Se la tua funzione Lambda chiama altri AWS servizi, dovrai assegnare un ruolo di IAM esecuzione alla funzione Lambda. Per creare il ruolo, segui le istruzioni in Ruolo di esecuzione AWS Lambda.
Esempi aggiuntivi di funzioni di autorizzazione Lambda
-
Per un esempio di applicazione, vedete Open Banking Brazil - Authorization Samples on
. GitHub -
Per altri esempi di funzioni Lambda, vedi aws-apigateway-lambda-authorizer-blueprints
on. GitHub -
Puoi creare un sistema di autorizzazione Lambda che autentichi gli utenti utilizzando i pool di utenti di Amazon Cognito e autorizzi i chiamanti in base a un policy store utilizzando Autorizzazioni verificate. Per ulteriori informazioni, consulta Controlla l'accesso in base agli attributi di un'identità con autorizzazioni verificate.
-
La console Lambda fornisce un blueprint Python, che puoi usare scegliendo Usa un blueprint e scegliendo il blueprint. api-gateway-authorizer-python