Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
Come posso autorizzare l'accesso alle API di Gateway API utilizzando ambiti personalizzati in Amazon Cognito?
Voglio autorizzare l'accesso alle mie risorse API di Amazon API Gateway utilizzando scope personalizzati in un pool di utenti Amazon Cognito.
Breve descrizione
Definisci un server di risorse con ambiti personalizzati nel pool di utenti Amazon Cognito. Quindi crea e configura un provider di autorizzazioni Amazon Cognito per l'API di Gateway API per autenticare le richieste alle risorse API.
Se disponi di client di app diversi che richiedono livelli di accesso diversi alle risorse API, puoi definire ambiti di accesso differenziati. Considera i livelli di accesso granulare di cui potrebbero aver bisogno i diversi client di app e progetta di conseguenza.
Risoluzione
Crea i seguenti prerequisiti:
- Un pool di utenti Amazon Cognito con un utente, un client di app e un nome di dominio
- Una REST API di Gateway API con una risorsa e un metodo
Aggiungi un server di risorse con ambiti personalizzati nel pool di utenti
1. Apri la console Amazon Cognito.
2. Definisci il server di risorse e gli ambiti personalizzati.
3. Dopo aver creato il server di risorse, scegli la scheda Integrazione dell'app.
4. Dalla sezione Client di app e analisi dei dati, seleziona il client di app.
- Nella sezione Interfaccia utente ospitata, scegli Modifica. Completa i seguenti passaggi:
Nell'elenco a discesa OAuth 2.0 grant types (Tipi di concessione OAuth 2.0), scegli Concessione implicita.
Nell'elenco a discesa Ambiti personalizzati, scegli l'ambito personalizzato che hai definito.
Nota: il formato per un ambito personalizzato è resourceServerIdentifier/scopeName. Quando un client richiede un ambito personalizzato in un flusso OAuth 2.0, la richiesta deve includere l'identificatore completo dell'ambito in questo formato.
6. Scegli Salva modifiche.
Se le applicazioni mobili dispongono di un componente lato server, utilizza il flusso di concessione del codice di autorizzazione e la chiave di prova per lo scambio di codice (PKCE). Con il flusso di concessione del codice di autorizzazione, i token sono più sicuri e non sono mai esposti direttamente a un utente finale.
Se la configurazione non contiene alcuna logica lato server, puoi utilizzare il flusso di concessione implicito. La concessione implicita non genera token di aggiornamento. Ciò impedisce che i token di aggiornamento vengano esposti al client. I token di aggiornamento hanno una validità maggiore e recuperano ID e token di accesso più recenti.
Importante: non archiviare i token di aggiornamento in un ambiente lato client.
Per ulteriori informazioni, consulta App client settings terminology. Per ulteriori informazioni sulle concessioni OAuth 2.0 del pool di utenti Amazon Cognito, consulta Understanding Amazon Cognito user pool OAuth 2.0 grants (Concessioni OAuth 2.0 del pool di utenti Amazon Cognito).
Crea un provider di autorizzazioni e integralo con l'API
Per completare la procedura, segui le istruzioni per integrare una REST API con un pool di utenti Amazon Cognito.
1. Per creare il provider di autorizzazioni, segui le istruzioni in Per creare un provider di autorizzazioni COGNITO_USER_POOLS utilizzando la console Gateway API.
Nota: dopo la creazione, nella console viene visualizzata un'opzione per testare il provider di autorizzazioni. L'operazione richiede un token di identità. Per testare la configurazione all'esterno della console utilizzando un token di accesso, consulta la sezione Ottieni un token di accesso al pool di utenti per il test in questo articolo.
2. Per integrare il provider di autorizzazioni con l'API, segui le istruzioni in Per configurare un provider di autorizzazioni COGNITO_USER_POOLS sui metodi.
Nota: in Ambiti OAuth, inserisci l'identificatore completo per un ambito personalizzato nel formato resourceServerIdentifier/scopeName.
Ottieni un token di accesso al pool di utenti per il test
Utilizza l'interfaccia utente web ospitata per il pool di utenti per accedere e recuperare un token di accesso dal server di autorizzazione Amazon Cognito. Oppure utilizza le implementazioni degli endpoint OAuth 2.0 disponibili negli AWS SDK per dispositivi mobili e web per recuperare un token di accesso.
Nota: quando un client di app richiede l'autenticazione tramite l'interfaccia utente web ospitata, la richiesta può includere qualsiasi combinazione di ambiti riservati dal sistema o ambiti personalizzati. Se il client non richiede alcun ambito, il server di autenticazione restituisce un token di accesso che contiene tutti gli ambiti associati al client. Quando progetti il client di app, assicurati che includa gli ambiti previsti nella richiesta per evitare di concedere autorizzazioni non necessarie.
1. Inserisci il seguente URL nel browser web:
https://yourDomainPrefix.auth.region.amazoncognito.com/login?response_type=token&client_id=yourClientId&redirect_uri=redirectUrl
Nota: sostituisci yourDomainPrefix e region con i valori del tuo pool di utenti. Puoi trovarli nella console Amazon Cognito nella scheda Nome di dominio del pool di utenti.
Sostituisci yourClientId con l'ID del client di app e sostituisci redirectUrl con l'URL di callback del client di app. Li trovi nella console consultando la scheda Impostazioni del client di app del pool di utenti. Per ulteriori informazioni, consulta L'endpoint di accesso gestito: /login.
2. Accedi al pool di utenti come l'utente che hai creato.
3. Copia il token di accesso dall'URL nella barra degli indirizzi. Il token è una lunga stringa di caratteri che segue access_token=.
Chiama l'API come test
Come test, utilizza il token di accesso come valore dell'intestazione di autorizzazione per chiamare l'API utilizzando il token di accesso. Puoi utilizzare l'app Postman (sul sito web Postman) o il comando curl da un'interfaccia della linea di comando. Per ulteriori informazioni su curl, visita il sito web del progetto curl.
Per utilizzare curl, esegui questo comando:
curl https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName -H "Authorization: accessToken"
Nota: sostituisci restApiId con l'ID dell'API. Sostituisci region con la regione AWS della tua API. Sostituisci stageName con il nome della fase in cui viene distribuita la tua API. Sostituisci resourceName con il nome della risorsa API. Sostituisci accessToken con il token che hai copiato. Per ulteriori informazioni, consulta Invocazione di REST API in Gateway API.
Quando configuri correttamente tutto, ottieni un codice di risposta 200 OK.
Informazioni correlate
Impostazioni specifiche dell'applicazione con client di app
Access token scope (Ambito del token di accesso) (The OAuth 2.0 Authorization Framework) (Il quadro di autorizzazione OAuth 2.0)
- Argomenti
- Security, Identity, & Compliance
- Lingua
- Italiano
