Come si autorizza l'accesso alle API Gateway utilizzando gli ambiti personalizzati in Amazon Cognito?

5 minuti di lettura
0

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 tuo pool di utenti Amazon Cognito. Quindi, crea e configura un autorizzatore Amazon Cognito per la tua API di API Gateway per autenticare le richieste alle tue risorse API.

Se disponi di app client 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 quindi progetta di conseguenza.

Risoluzione

Crea i seguenti prerequisiti:

Aggiungi un server di risorse con ambiti personalizzati nel tuo 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 App Integration.

  4. Dalla sezione App client e analisi, seleziona il client dell'app.

  5. Nella sezione Hosted UI, scegli Modifica. Completa i seguenti passaggi:
    Per l'elenco a discesa dei 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 tue 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à più lunga 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 Terminologia delle impostazioni del client dell'app. Per ulteriori informazioni sulle sovvenzioni OAuth 2.0 del pool di utenti Amazon Cognito, consulta Comprendere le sovvenzioni OAuth 2.0 del pool di utenti Amazon Cognito.

Crea un autorizzatore e integralo con la tua API

Per completare i seguenti passaggi, segui le istruzioni per integrare un'API REST con un pool di utenti Amazon Cognito.

  1. Per creare l'autorizzatore, segui le istruzioni in Per creare un autorizzatore COGNITO_USER_POOLS utilizzando la console API Gateway.
    Nota: dopo la creazione, nella console viene visualizzata un'opzione per testare l'autorizzatore. Ciò richiede un token di identità. Per utilizzare un token di accesso per testare la configurazione all'esterno della console, consulta la sezione Ottenere un token di accesso a un pool di utenti per i test in questo articolo.

  2. Per integrare l'autorizzatore con la tua API, segui le istruzioni in Per configurare un autorizzatore COGNITO_USER_POOLS sui metodi.
    Nota: Per OAuth Scopes, inserisci l'identificatore completo per un ambito personalizzato nel formato resourceServerIdentifier/ScopeName.

  3. Implementa la tua API.

Ottieni un token di accesso al pool di utenti per i test

Usa l'interfaccia utente web ospitata per il tuo 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 SDK AWS 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 dell'app, assicurati che il client includa gli ambiti previsti nella richiesta per evitare di concedere autorizzazioni non necessarie.

  1. Inserisci il seguente URL nel tuo 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 per il tuo pool di utenti. Puoi trovarli nella console Amazon Cognito nella scheda Nome di dominio del tuo pool di utenti.
    Sostituisci yourClientID con l'ID del client dell'app e sostituisci redirectUrl con l'URL di callback del client dell'app. Trovali nella console nella scheda delle impostazioni del client dell'app per il tuo pool di utenti. Per ulteriori informazioni, consulta Login Endpoint.

  2. Accedi al tuo 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 la tua API come test

Come test, usa il token di accesso come valore dell'intestazione di autorizzazione per chiamare la tua API utilizzando il token di accesso. È possibile utilizzare l'app Postman (sul sito Web di 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 usare curl, esegui il seguente comando:

curl https://restApiId.execute-api.region.amazonaws.com/stageName/resourceName -H "Authorization: accessToken"

Nota: Sostituisci restApiID con l'ID API. Sostituisci la regione 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 Invocare un'API REST in Amazon API Gateway.

Quando configuri correttamente tutto, ottieni un codice di risposta da 200 OK.

Informazioni correlate

Configurazione di un client di app per pool di utenti

Ambito del token di accesso (The OAuth 2.0 Authorization Framework)

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa