Caching dei token - Amazon Cognito

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à.

Caching dei token

Un diagramma di un API Gateway che mantiene una cache di token di accesso per M2M. Il proxy API elabora la richiesta di token e restituisce un token memorizzato nella cache se uno è già valido.

L'app deve completare una delle seguenti richieste ogni volta che desideri ottenere un nuovo token web JSON (JWT).

  • Richiesta di una concessione di credenziali client o codici di autorizzazione dall'Endpoint Token.

  • Richiesta di una concessione implicita dall'interfaccia utente ospitata.

  • Autentica un utente locale in una richiesta API Amazon Cognito come. InitiateAuth

Puoi configurare il pool di utenti in modo da impostare la scadenza dei token entro un valore definito in minuti, ore o giorni. Per garantire le prestazioni e la disponibilità della tua app, utilizza i token Amazon Cognito per circa il 75% della durata del token e solo dopo recupera nuovi token. Una soluzione di caching creata per l'app mantiene disponibili i token e impedisce ad Amazon Cognito di rifiutare le richieste quando la frequenza delle richieste è troppo alta. Un'app lato client deve archiviare i token in una cache di memoria. Un'app lato server può aggiungere un meccanismo di caching crittografato per archiviare i token.

Quando il tuo pool di utenti genera un volume elevato di utenti o machine-to-machine attività, potresti incontrare i limiti imposti da Amazon Cognito sul numero di richieste di token che puoi effettuare. Per ridurre il numero di richieste inviate agli endpoint Amazon Cognito, è possibile archiviare e riutilizzare in modo sicuro i dati di autenticazione o implementare backoff esponenziale e nuovi tentativi.

I dati di autenticazione provengono da due classi di endpoint. Gli endpoint OAuth 2.0 di Amazon Cognito includono l'endpoint token, che gestisce le credenziali client e le richieste di codice di autorizzazione dell'interfaccia utente ospitata. Gli endpoint del servizio rispondono a richieste API come InitiateAuth e RespondToAuthChallenge. Ogni tipo di richiesta è caratterizzato da un limite specifico. Per ulteriori informazioni sui limiti, consulta Quote in Amazon Cognito.

Memorizzazione nella cache dei token di machine-to-machine accesso con Amazon API Gateway

Con il caching dei token di Gateway API, l'app può eseguire il ridimensionamento in risposta a eventi che superano il limite predefinito per la frequenza delle richieste degli endpoint OAuth di Amazon Cognito.

Puoi memorizzare nella cache i token di accesso in modo che l'app richieda un nuovo token di accesso solo se un token memorizzato nella cache è scaduto. In caso contrario, l'endpoint di caching restituisce un token dalla cache. Ciò evita una chiamata aggiuntiva a un endpoint dell'API Amazon Cognito. Quando si utilizza Gateway Amazon API come proxy per l'Endpoint Token, l'API risponde alla maggior parte delle richieste che altrimenti contribuirebbero alla quota di richieste, evitando richieste non riuscite risultanti dalla limitazione della frequenza.

La seguente soluzione basata su Gateway API offre un'implementazione a bassa latenza, a bassa presenza di codice/senza codice del caching dei token. Le API di Gateway API sono crittografate in transito e, facoltativamente, quando sono inattive. Una cache API Gateway è ideale per la concessione delle credenziali del client OAuth 2.0, un tipo di concessione spesso ad alto volume che produce token di accesso per l'autorizzazione e sessioni di microservizi. machine-to-machine In un evento come un aumento del traffico che causa la scalabilità orizzontale dei microservizi, è possibile che molti sistemi utilizzino le stesse credenziali client a un volume che supera il limite di frequenza delle richieste del pool di utenti o del client dell'app. AWS Per preservare la disponibilità delle app e la bassa latenza, una soluzione di caching è la best practice consigliata in tali scenari.

In questa soluzione si definisce una cache nell'API per archiviare un token di accesso distinto per ogni combinazione di ambiti OAuth e client dell'app che si desidera richiedere nell'app. Quando l'app effettua una richiesta corrispondente alla chiave della cache, l'API risponde con un token di accesso emesso da Amazon Cognito alla prima richiesta corrispondente alla chiave della cache. Alla scadenza della chiave, l'API inoltra la richiesta all'endpoint del token e memorizza nella cache un nuovo token di accesso.

Nota

La durata della chiave della cache deve essere inferiore alla durata del token di accesso del client dell'app.

La chiave della cache è una combinazione degli ambiti OAuth richiesti nel parametro URL scope e nell'intestazione Authorization nella richiesta. L'intestazione Authorization contiene l'ID del client dell'app e il segreto client. Non è necessario implementare una logica aggiuntiva nell'app per implementare questa soluzione. È solo necessario aggiornare la configurazione per modificare il percorso dell'endpoint del token del pool di utenti.

Puoi anche implementare la memorizzazione nella cache dei token con for Redis. ElastiCache Per un controllo granulare con le policy AWS Identity and Access Management (IAM), valuta l'ipotesi di utilizzare una cache Amazon DynamoDB.

Nota

Il caching in Gateway API è soggetto a costi aggiuntivi. Per maggiori dettagli, consulta la pagina relativa ai prezzi.

Per configurare un proxy di caching con Gateway API

  1. Apri la Console Gateway API e crea una REST API.

  2. In Resources (Risorse), crea un metodo POST.

    1. In Integration type (Tipo di integrazione), scegli HTTP.

    2. Seleziona Use HTTP proxy integration (Utilizza integrazione proxy HTTP).

    3. In Endpoint URL (URL endpoint), immetti un URL nel formato https://<your user pool domain>/oauth2/token.

  3. In Resources (Risorse), configura la chiave della cache.

    1. In Method request (Richiesta metodo), modifica la richiesta del metodo POST.

    2. Imposta il parametro scope e l'intestazione Authorization come chiave di caching.

      1. Aggiungi una stringa di query in URL query string parameters (Parametri della stringa di query URL) e scegli Caching per la stringa scope.

      2. Aggiungi un'intestazione in HTTP request headers (Intestazioni di richiesta HTTP) e scegli Caching per l'intestazione Authorization.

  4. In Stages (Fasi), configura il caching.

    1. Scegliere la fase da modificare.

    2. In Settings (Impostazioni), seleziona Enable API cache (Abilita API cache).

    3. Scegli un valore in Cache capacity (Capacità cache).

    4. Scegli una cache time-to-live (TTL) di almeno 3600 secondi.

    5. Deseleziona la casella di controllo Richiedi autorizzazione.

  5. In Stages (Fasi), annota il valore visualizzato in Invoke URL (Richiama URL).

  6. Aggiorna la tua app per le richieste di token POST in base al valore di Invoke URL (Richiama URL) della tua API anziché in base all'endpoint /oauth2/token del pool di utenti.