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à.
Flusso di autenticazione dei pool di identità (identità federate)
Amazon Cognito consente di creare identificatori univoci per i tuoi utenti finali che sono mantenuti coerenti su tutti i dispositivi e le piattaforme. Amazon Cognito fornisce anche credenziali temporanee con privilegi limitati alla tua applicazione per accedere alle risorse. AWS In questa pagina sono riportati i concetti di base del funzionamento dell'autenticazione in Amazon Cognito e viene spiegato il ciclo di vita di un'identità all'interno del tuo pool di identità.
Flusso di autenticazione del provider esterno
Un utente che effettua l'autenticazione con Amazon Cognito passa attraverso un processo multifase per eseguire il bootstrap delle proprie credenziali. Amazon Cognito dispone di due flussi differenti per l'autenticazione con provider pubblici: avanzati e di base.
Una volta completato uno di questi flussi, puoi accedere ad altri, Servizi AWS come definito dalle politiche di accesso del tuo ruolo. Di default, la console Amazon Cognito
I pool di identità accettano i seguenti elementi forniti dai provider:
Provider | Artefatto di autenticazione |
---|---|
Bacino d'utenza di Amazon Cognito | Token ID |
OpenID Connect (OIDC) | Token ID |
SAML 2.0 | Asserzione SAML |
Fornitore di servizi sociali | Token di accesso |
Flusso di autenticazione avanzato (semplificato)
Quando utilizzi il flusso di autenticazione avanzato, l'app presenta innanzitutto una prova di autenticazione da un pool di utenti Amazon Cognito autorizzato o da un provider di identità di terze parti in GetIduna richiesta.
-
Il tuo pool di identità restituisce un ID di identità.
-
L'applicazione combina l'ID di identità con la stessa prova di autenticazione in una GetCredentialsForIdentityrichiesta.
-
Il pool di identità restituisce AWS le credenziali.
-
La tua applicazione firma le richieste AWS API con le credenziali temporanee.
L'autenticazione avanzata gestisce la logica della selezione dei ruoli IAM e del recupero delle credenziali nella configurazione del pool di identità. Puoi configurare il tuo pool di identità per selezionare un ruolo predefinito, per applicare i principi del controllo degli accessi basato sugli attributi (ABAC) o del controllo degli accessi basato sui ruoli (RBAC) alla selezione dei ruoli. Le AWS credenziali dell'autenticazione avanzata sono valide per un'ora.
Ordine delle operazioni nell'autenticazione avanzata
-
GetId
-
GetCredentialsForIdentity
![Un diagramma che mostra il flusso dell'autenticazione avanzata](images/amazon-cognito-ext-auth-enhanced-flow.png)
Flusso di autenticazione di base (classico)
Quando si utilizza il flusso di autenticazione di base,
-
Il tuo pool di identità restituisce un ID di identità.
-
L'applicazione combina l'ID di identità con la stessa prova di autenticazione in una GetOpenIdTokenrichiesta.
-
GetOpenIdToken
restituisce un nuovo token OAuth 2.0 emesso dal tuo pool di identità. -
L'applicazione presenta il nuovo token in una AssumeRoleWithWebIdentityrichiesta.
-
AWS Security Token Service AWS STS) restituisce AWS le credenziali.
-
L'applicazione firma le richieste AWS API con le credenziali temporanee.
Il flusso di lavoro di base offre un controllo più granulare sulle credenziali distribuite agli utenti. La richiesta GetCredentialsForIdentity
del flusso di autenticazione avanzato richiede un ruolo basato sul contenuto di un token di accesso. La AssumeRoleWithWebIdentity
richiesta nel flusso di lavoro classico garantisce all'app una maggiore capacità di richiedere le credenziali per qualsiasi AWS Identity and Access Management ruolo configurato con una politica di attendibilità sufficiente. Puoi anche richiedere una durata della sessione del ruolo personalizzata.
Ordine delle operazioni nell'autenticazione di base
-
GetId
-
GetOpenIdToken
-
AssumeRoleWithWebIdentity
![Un diagramma che mostra il flusso dell'autenticazione di base](images/amazon-cognito-ext-auth-basic-flow.png)
Flusso di autenticazione delle identità autenticate dagli sviluppatori
Quando utilizzi Identità autenticate dagli sviluppatori (pool di identità), il client usa un altro flusso di autenticazione che include il codice esterno ad Amazon Cognito per convalidare l'utente nel tuo sistema di autenticazione. Il codice al di fuori di Amazon Cognito è indicato come tale.
Flusso di autenticazione avanzato
Ordine delle operazioni in Autenticazione avanzata con un provider di sviluppo
-
Accesso tramite provider per gli sviluppatori (codice esterno Amazon Cognito)
-
Convalida dell'accesso dell'utente (codice esterno ad Amazon Cognito)
![Un diagramma che mostra il flusso dell'autenticazione avanzata autenticata dallo sviluppatore](images/amazon-cognito-dev-auth-enhanced-flow.png)
Ordine delle operazioni nell'autenticazione di base con un provider di sviluppo
-
Implementa la logica all'esterno del pool di identità per accedere e generare un identificatore sviluppatore-provider.
-
Recupera le credenziali memorizzate sul lato server. AWS
-
Invia l'identificatore del provider di sviluppo in una richiesta GetOpenIdTokenForDeveloperIdentityAPI firmata con credenziali autorizzate. AWS
-
Richiedi le credenziali dell'applicazione con. AssumeRoleWithWebIdentity
![Un diagramma che mostra il flusso dell'autenticazione di base autenticata dagli sviluppatori](images/amazon-cognito-dev-auth-basic-flow.png)
Quale flusso di autenticazione usare?
Il flusso avanzato è la scelta più sicura con il più basso livello di impegno da parte degli sviluppatori:
-
Il flusso migliorato riduce la complessità, le dimensioni e la frequenza delle richieste API.
-
Non è necessario che l'applicazione effettui richieste API aggiuntive a AWS STS.
-
Il tuo pool di identità valuta gli utenti in base alle credenziali del ruolo IAM che dovrebbero ricevere. Non è necessario incorporare la logica per la selezione dei ruoli nel cliente.
Importante
Quando crei un nuovo pool di identità, non attivare l'autenticazione di base (classica) per impostazione predefinita, come best practice. Per implementare l'autenticazione di base, valuta innanzitutto le relazioni di fiducia dei tuoi ruoli IAM per le identità web. Quindi incorpora la logica per la selezione dei ruoli nel tuo client e proteggi il client dalle modifiche da parte degli utenti.
Il flusso di autenticazione di base delega la logica della selezione dei ruoli IAM alla tua applicazione. In questo flusso, Amazon Cognito convalida la sessione autenticata o non autenticata dell'utente ed emette un token con cui puoi scambiare credenziali. AWS STS Gli utenti possono scambiare i token dell'autenticazione di base con qualsiasi ruolo IAM che si fida del tuo pool di identità e/o dello stato autenticato/non autenticato. amr
Allo stesso modo, tenete presente che l'autenticazione degli sviluppatori è una scorciatoia per la convalida dell'autenticazione del provider di identità. Amazon Cognito considera attendibili le AWS credenziali che autorizzano una GetOpenIdTokenForDeveloperIdentityrichiesta senza un'ulteriore convalida del contenuto della richiesta. Proteggi i segreti che autorizzano l'autenticazione degli sviluppatori dall'accesso da parte degli utenti.
Riepilogo delle API
- GetId
-
La chiamata GetIdAPI è la prima chiamata necessaria per stabilire una nuova identità in Amazon Cognito.
- Accesso non autenticato
-
Amazon Cognito può concedere le autorizzazione di accesso alle tue applicazioni agli utenti guest non autenticati. Se questa caratteristica è abilitata nel pool di identità, gli utenti possono richiedere un nuovo ID identità in qualsiasi momento tramite l'API
GetId
. È previsto che l'applicazione memorizzi nella cache questo ID identità per effettuare chiamate successive a Amazon Cognito. Gli SDK per AWS dispositivi mobili e l' AWS SDK for JavaScript in the Browser dispongono di fornitori di credenziali che gestiscono questa memorizzazione nella cache per te. - Accesso autenticato
-
Una volta che hai configurato la tua applicazione con il supporto per un provider di accesso pubblico (Facebook, Google +, Login with Amazon o Accedi con Apple), gli utenti sono anche in grado di fornire i token (OAuth o OpenID Connect) che li identificano in quei provider. Se utilizzato in una chiamata a
GetId
, Amazon Cognito crea una nuova identità autenticata oppure restituisce l'identità già associata con quel particolare accesso. Amazon Cognito fa ciò convalidando il token con il provider e assicurando che:-
Il token sia valido e che provenga dal provider configurato.
-
Il token non sia scaduto.
-
Il token corrisponda con l'identificatore dell'applicazione creato con quel provider (ad esempio,l'ID dell'app Facebook).
-
Il token corrisponda con l'identificatore dell'utente.
-
- GetCredentialsForIdentity
-
L'GetCredentialsForIdentityAPI può essere richiamata dopo aver stabilito un ID di identità. Questa operazione è funzionalmente equivalente alla chiamata GetOpenIdToken, quindi AssumeRoleWithWebIdentity.
Affinché Amazon Cognito possa chiamare
AssumeRoleWithWebIdentity
per tuo conto, il tuo bacino d'utenza deve avere i ruoli IAM ad esso associati. Puoi farlo tramite la console Amazon Cognito o manualmente tramite l'SetIdentityPoolRolesoperazione. - GetOpenIdToken
-
Effettua una richiesta GetOpenIdTokenAPI dopo aver stabilito un ID di identità. Memorizza l'ID di identità nella cache dopo la prima richiesta e avvia le successive sessioni di base (classiche) per l'identità con
GetOpenIdToken
.La risposta a una richiesta API
GetOpenIdToken
è un token generato da Amazon Cognito. Puoi inviare questo token comeWebIdentityToken
parametro in una AssumeRoleWithWebIdentityrichiesta.Prima di inviare il token OpenID, è necessario verificarlo nell'app. Puoi utilizzare le librerie OIDC dell'SDK o una libreria come aws-jwt-verify
per verificare che Amazon Cognito abbia emesso il token. L'ID della chiave di firma, o kid
, del token OpenID è uno di quelli elencati nel documento jwks_uri† dell'identità di Amazon Cognito. Queste chiavi sono soggette a modifiche. La funzione che verifica i token di identità di Amazon Cognito deve aggiornare periodicamente l'elenco delle chiavi dal documento jwks_uri. Amazon Cognito imposta la durata dell'aggiornamento nell'intestazione della risposta cache-control di jwks_uri, attualmente con max-age
impostato su 30 giorni.- Accesso non autenticato
-
Per ottenere un token per un'identità non autenticata, necessiti soltanto dell'ID identità. Non è possibile ottenere un token non autenticato per identità autenticate o disattivate.
- Accesso autenticato
-
Se disponi di un'identità autenticata, è necessario trasmettere almeno un token valido per un accesso già associato con quella identità. Tutti i token trasmessi durante la chiamata
GetOpenIdToken
dovranno trasmettere la stessa convalida menzionata in precedenza; se uno dei token fallisce, tutta la chiamata ha esito negativo. La risposta dalla chiamataGetOpenIdToken
include anche l'ID identità. Questo avviene perché l'ID identità che trasmetti potrebbe non essere quello che viene restituito. - Collegamento degli accessi
-
Se invii un token per un accesso che non è già associato a un'identità, l'accesso è considerato "collegato" all'identità associata. Puoi collegare un solo accesso per provider pubblico. I tentavi di collegare più di un accesso con un provider pubblico determinano una risposta di errore
ResourceConflictException
. Se un accesso è semplicemente collegato a un'identità esistente, l'ID identità restituito dalGetOpenIdToken
è uguale a quello che hai trasmesso. - Unione delle identità
-
Se trasmetti un token per un accesso che non è attualmente collegato a una determinata identità, bensì a un'altra, le due identità vengono unite. Una volta unite, un'identità diventa principale/proprietaria di tutti gli accessi associati e l'altra è disattivata. In questo caso, l'ID identità principale/proprietario viene restituito. È necessario aggiornare la cache locale se questo valore è diverso. I provider degli SDK AWS mobili o dell' AWS SDK per JavaScript il browser eseguono questa operazione per te.
- GetOpenIdTokenForDeveloperIdentity
-
L'GetOpenIdTokenForDeveloperIdentityoperazione sostituisce l'uso di GetIde GetOpenIdTokendal dispositivo quando si utilizzano identità autenticate dagli sviluppatori. Poiché l'applicazione firma le richieste a questa operazione API con AWS credenziali, Amazon Cognito ritiene che l'identificatore utente fornito nella richiesta sia valido. L'autenticazione degli sviluppatori sostituisce la convalida dei token eseguita da Amazon Cognito con provider esterni.
Il payload per questa API include una mappa.
logins
Questa mappa deve contenere la chiave del provider di sviluppo e un valore come identificatore per l'utente nel sistema. Se l'identificatore dell'utente non è già collegato a un'identità esistente, Amazon Cognito crea una nuova identità e restituisce il nuovo ID e il token OpenID Connect per l'identità. Se l'identificatore dell'utente è già collegato, Amazon Cognito restituisce l'ID di identità preesistente e il token OpenID Connect. Memorizza gli ID di identità autenticate da sviluppatori nella cache dopo la prima richiesta e avvia le successive sessioni di base (classiche) per l'identità conGetOpenIdTokenForDeveloperIdentity
.La risposta a una richiesta API
GetOpenIdTokenForDeveloperIdentity
è un token generato da Amazon Cognito. Puoi inviare questo token come parametroWebIdentityToken
in una richiestaAssumeRoleWithWebIdentity
.Prima di inviare il token OpenID Connect, è necessario verificarlo nell'app. Puoi utilizzare le librerie OIDC dell'SDK o una libreria come aws-jwt-verify
per verificare che Amazon Cognito abbia emesso il token. L'ID della chiave di firma, o kid
, del token OpenID Connect è uno di quelli elencati nel documento jwks_uri† dell'identità di Amazon Cognito. Queste chiavi sono soggette a modifiche. La funzione che verifica i token di identità di Amazon Cognito deve aggiornare periodicamente l'elenco delle chiavi dal documento jwks_uri. Amazon Cognito imposta la durata dell'aggiornamento nell'intestazione della risposta cache-control
di jwks_uri, attualmente conmax-age
impostato su 30 giorni.- Collegamento degli accessi
-
Come per i provider esterni, la fornitura degli accessi aggiuntivi, che non sono già associati a un'identità, implicitamente collega quegli accessi a quella identità. Se colleghi l'accesso di un provider esterno a un'identità, l'utente può utilizzare il flusso di autenticazione del provider esterno con tale provider. Tuttavia, non può usare il nome del provider degli sviluppatori nella mappa degli accessi quando chiama
GetId
oGetOpenIdToken
. - Unione delle identità
-
Con le identità autenticate dagli sviluppatori, Amazon Cognito supporta sia la fusione implicita che la fusione esplicita tramite l'API. MergeDeveloperIdentities Tramite l'unione esplicita puoi contrassegnare due identità con gli identificatori utente nel tuo sistema come una singola identità. È sufficiente che tu fornisca gli identificatori dell'utente di origine e di destinazione e Amazon Cognito li unisce. La prossima volta che richiedi un token OpenID Connect per ciascuno degli identificatori dell'utente, viene restituito lo stesso ID identità.
- AssumeRoleWithWebIdentity
-
Dopo aver ottenuto un token OpenID Connect, puoi scambiarlo con AWS credenziali temporanee tramite la richiesta AssumeRoleWithWebIdentityAPI a AWS Security Token Service ().AWS STS
Poiché non esiste alcuna restrizione sul numero di identità che puoi creare, è importante comprendere le autorizzazioni che concedi agli utenti. Configura diversi ruoli IAM per la tua applicazione: uno per gli utenti non autenticati e uno per gli utenti autenticati. La console Amazon Cognito può creare ruoli predefiniti quando configuri per la prima volta il tuo pool di identità. A questi ruoli non è effettivamente concessa alcuna autorizzazione. Modificali per soddisfare le tue esigenze.
Ulteriori informazioni su Attendibilità del ruolo e autorizzazioni.
† Il documento jwks_uri
Regione AWS | Percorso del documento jwks_uri |
---|---|
AWS GovCloud (Stati Uniti occidentali) | https://cognito-identity.us-gov-west-1.amazonaws.com/.well-known/jwks_uri |
Cina (Pechino) | https://cognito-identity---cn-north-1.amazonaws.com.rproxy.goskope.com.cn/.well-known/jwks_uri |
Regioni opt-in come Europa (Milano) e Africa (Città del Capo) | https://cognito-identity. |
Puoi anche estrapolare il documento jwks_uri dall'emittente, o iss
, che ricevi nel token OpenID da Amazon Cognito. L'endpoint di rilevamento standard OIDC <issuer>/.well-known/openid-configuration
elenca il percorso del documento jwks_uri per il token.