Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Come posso configurare un pool di utenti Amazon Cognito come autorizzatore su un'API REST di API Gateway?
Desidero configurare un pool di utenti Amazon Cognito come autorizzatore sulla mia API REST di Amazon API Gateway.
Breve descrizione
Esistono due modi per configurare un pool di utenti Amazon Cognito come autorizzatore su un'API REST di API Gateway:
Puoi utilizzare dei token ID o dei token di accesso per l'autorizzazione. I token di accesso possono utilizzare ambiti personalizzati in Amazon Cognito per autorizzare l'accesso alle API di API Gateway. Un autorizzatore Lambda può convalidare le affermazioni nei token ID e nei token di accesso emessi da Amazon Cognito.
Per ulteriori informazioni, consulta i seguenti argomenti:
- Using tokens with user pools
- About resource servers
- Create an Amazon Cognito user pool for a REST API
Soluzione
Prerequisiti:
Crea un autorizzatore COGNITO_USER_POOLS
Per ulteriori informazioni, consulta Integrazione di una REST API con un pool di utenti di Amazon Cognito. Segui le istruzioni nella sezione Per creare un autorizzatore COGNITO_USER_POOLS utilizzando la console API Gateway.
Prova il nuovo autorizzatore COGNITO_USER_POOLS
Completa i seguenti passaggi:
- Apri la console API Gateway.
- Nel nuovo autorizzatore, seleziona il pulsante Test.
- Nella finestra Test, in Autorizzazione, inserisci un token ID dal nuovo pool di utenti di Amazon Cognito.
- Scegli Test.
Nota: se il token ID è corretto, il test restituisce un codice di risposta 200. Un token ID errato restituisce un codice di risposta 401.
Configura l'autorizzatore COGNITO_USER_POOLS su un metodo API
Per ulteriori informazioni, consulta Integrazione di una REST API con un pool di utenti di Amazon Cognito. Segui le istruzioni nella sezione Per configurare un autorizzatore COGNITO_USER_POOLS sui metodi.
Ottieni token di autorizzazione
Esistono tre modi per ottenere token di autorizzazione:
- Utilizza l'Interfaccia della linea di comando AWS (AWS CLI).
- Usa uno degli SDK AWS.
- Usa l'app Postman.
Nota: imposta nell'interfaccia utente ospitata di Amazon Cognito la concessione del codice di autorizzazione per consentire alla tua applicazione di scambiare il codice per un endpoint token.
Se usi un tipo di concessione implicito, puoi ottenere la concessione dall'URL di callback. L'URL di callback viene aggiunto con i parametri del token di accesso e del token ID per il flusso implicito. Assicurati di utilizzare il tipo di token corretto.
Utilizza l’interfaccia utente ospitata per Amazon Cognito per ottenere i token di autorizzazione
Nota: quando si utilizza il flusso Concessione del codice di autorizzazione, il parametro del tipo di risposta deve essere "code".
Per utilizzare il flusso Authorization code grant, completa i seguenti passaggi:
-
Invia una richiesta GET per la concessione del codice di autorizzazione:
https://example_domain/oauth2/authorize?response_type=code&client_id=example_app_client_id&redirect_uri=example_callback_url
Nota: sostituisci example_domain con il nome di dominio del tuo pool di utenti. Sostituisci example_app_client_id con l'ID client dell'app del tuo pool di utenti. Sostituisci example_callback_url con il tuo URL di callback. Includi il parametro identity_provider per l'endpoint da reindirizzare al provider di identità federato. Se l'app client è configurato solo per i pool di utenti Amazon Cognito, il seguente endpoint reindirizza all'endpoint /login:
https://example_domain/login?response_type=code&client_id=example_app_client_id&redirect_uri=example_callback_url
-
Accedi al tuo pool di utenti o al tuo provider di identità federato. L'interfaccia utente reindirizza all'URL specificato nel callback per il client dell'app.
Importante: l'URL di reindirizzamento include il codice di autorizzazione che deve essere scambiato con l'endpoint del token per ottenere token validi. -
Invia una richiesta POST all'endpoint /oauth2/token per ottenere token in cambio di un codice di autorizzazione. Per ulteriori informazioni, consulta Token endpoint.
Esempio di richiesta POST per lo scambio di un codice di autorizzazione per i token
Nota: la richiesta POST di esempio utilizza il seguente endpoint /oauth2/token: https://example_domain.auth.us-east-1.amazoncognito.com/oauth2/token &
Content-Type='application/x-www-form-urlencoded'&Authorization=Basic ZXhhbXBsZTEyMzQ1Njc4OTA6enl4OTh3N3l2dHNycTY1NHBvMzIx grant_type=authorization_code& client_id=example1234567890& code=AUTHORIZATION_CODE& redirect_uri=com.myclientapp://myclient/redirect
Esempio di risposta alla richiesta POST
HTTP/1.1 200 OK Content-Type: application/json { "access_token":"abCde1example", "id_token":"abCde2example", "refresh_token":"abCde3example", "token_type":"Bearer", "expires_in":3600 }
Nota: quando si utilizza il flusso Concessione implicita il parametro del tipo di risposta deve essere "token".
Per utilizzare il flusso Concessione implicita, completa i seguenti passaggi:
-
Invia una richiesta GET per una concessione implicita:
https://example_domain/oauth2/authorize?response_type=token&client_id=example_app_client_id&redirect_uri=example_callback_url
Nota: sostituisci example_domain con il nome di dominio del tuo pool di utenti. Sostituisci example_app_client_id con l'ID client dell'app del tuo pool di utenti. Sostituisci example_callback_url con il tuo URL di callback. Includi il parametro identity_provider per l'endpoint da reindirizzare al provider di identità federato. Se l'app client è configurato solo per i pool di utenti Amazon Cognito, il seguente endpoint reindirizza all'endpoint /login:
https://example_domain/login?response_type=token&client_id=example_app_client_id&redirect_uri=example_callback_url
-
Accedi al tuo pool di utenti con il nome utente e la password di un utente esistente oppure crea un nuovo utente per l'accesso. L'interfaccia utente reindirizza all'URL specificato nel callback per il client dell'app.
Nota: l'URL di reindirizzamento include il token ID e il token di accesso.
Esempio di URL di reindirizzamento:https://www.example.com/#id_token=123456789idtoken123456789&access_token=123456789accesstoken123456789expires_in=3600&token_type=Bearer
Usa AWS CLI per ottenere token di autorizzazione
Nota: se visualizzi dei messaggi di errore quando esegui i comandi dell'interfaccia della linea di comando AWS, consulta la sezione Risolvere gli errori AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Esegui il seguente comando di AWS CLI initiate-auth per ottenere i token di autorizzazione:
aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=example_user,PASSWORD=example_password --client-id example_app_client_id
Importante: sostituisci example_user con il tuo nome utente, example_password con la tua password e example_app_client_id con l’ID client dell’app.
Esempio di risposta al comando dell'interfaccia a riga di comando AWS CLI initiate-auth
{ "AuthenticationResult": { "AccessToken": "abCde1example", "IdToken": "abCde2example", "RefreshToken": "abCde3example", "TokenType": "Bearer", "ExpiresIn": 3600 }, "ChallengeParameters": {} }
Usa degli SDK AWS per ottenere i token di autorizzazione
Per ulteriori informazioni, consulta Integrating Amazon Cognito authentication and authorization with web and mobile apps.
Usa Postman per ottenere i token di autorizzazione
Utilizza la modalità di autorizzazione OAuth 2.0 dal sito web di Postman per ottenere token di autorizzazione. Per ulteriori informazioni, consulta Perché ricevo errori 401 di autorizzazione negata di Gateway API dopo aver creato un sistema di autorizzazione Lambda?
Configura gli ambiti personalizzati OAuth 2.0 nei pool di utenti di Amazon Cognito e verifica gli ambiti in API Gateway
Un ambito fornisce un livello di accesso che un'app può richiedere a una risorsa. Amazon Cognito dispone di ambiti OAuth integrati che possono essere configurati per consentire l'associazione di un client dell’app a un pool di utenti. Per ulteriori informazioni sugli ambiti integrati in Amazon Cognito, consulta App client terms.
Gli ambiti personalizzati possono essere associati ai server di risorse OAuth 2.0. Per ulteriori informazioni sui server di risorse, vedere Ambiti OAuth 2.0 e autorizzazione API con server di risorse.
Quando usi Amazon Cognito con API Gateway, l'autorizzatore Amazon Cognito autentica la richiesta e protegge le risorse. L'utilizzo di ambiti personalizzati con Amazon Cognito e API Gateway aiuta a fornire livelli di accesso differenziati alle risorse API. Hai anche un maggiore controllo quando esponi le risorse per ottenere gli ambiti dei token di accesso.
Configura un server di risorse e ambiti personalizzati OAuth 2.0 in un pool di utenti
- Definisci il server di risorse e gli ambiti personalizzati per il tuo pool di utenti.
- Per l'identificatore del server di risorse, fornisci l'endpoint HTTPS del gateway API in cui si trovano le tue risorse.
- Se necessario, configura un client dell’app del pool di utenti e quindi aggiungi gli ambiti personalizzati nelle impostazioni del client dell'app.
Nota: un nome di ambito personalizzato è formattato come resourceServerIdentifier/scopeName
Quando un client dell’app richiede un ambito personalizzato in un flusso OAuth 2.0, tale client deve richiedere l'identificatore completo per l'ambito. Ad esempio, se l'identificatore del server di risorse è https://myresourceserver.example.com e il nome dell'ambito è resources.read, il client dell'app deve richiedere https://myresourceserver.example.com/resources.read in fase di esecuzione.
Verifica gli ambiti personalizzati OAuth 2.0 in API Gateway
- Integra una REST API con un pool di utenti Amazon Cognito.
- Nella console API Gateway, scegli una REST API.
- Nel riquadro Risorse, scegli un nome di metodo.
- Scegli la configurazione Richiesta metodo.
- Dall'elenco a discesa Autorizzazione, scegli Cognito Authorizer. Questo aggiunge automaticamente un nuovo campo denominato Ambiti OAuth.
- Nel campo Ambiti OAuth, inserisci l'identificatore completo per l'ambito personalizzato nel formato indicato in precedenza. Ad esempio, https://myresourceserver.example.com/resources.read.
- Salva e distribuisci l'API.
Usa Postman o CURL per testare la configurazione
- Per ottenere il token di accesso dal server di autorizzazione Amazon Cognito usa uno dei flussi OAuth 2.0 definiti per il client.
- Invia il token di accesso che hai ricevuto come intestazione di autorizzazione in una richiesta ad API Gateway.
Se tutto va a buon fine e API Gateway convalida e verifica il token di accesso e l'ambito personalizzato, otterrai una risposta 200 OK.
Informazioni correlate
Come posso decodificare e verificare la firma di un token Web JSON di Amazon Cognito?

Contenuto pertinente
- AWS UFFICIALEAggiornata 10 mesi fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 6 mesi fa