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à.
Modelli di autorizzazione per l'autenticazione tramite API e SDK
Quando si inizia con l'autenticazione dei pool di utenti, è necessario decidere il modello di autorizzazione dell'applicazione. L'autenticazione di Amazon Cognito richiede in genere l'implementazione di due operazioni API in ordine. Le operazioni API utilizzate per l'autenticazione dipendono dalle caratteristiche dell'applicazione. I client pubblici, in cui l'applicazione viene distribuita agli utenti, utilizzano l'autenticazione pubblica, in cui le richieste di accesso non richiedono l'autorizzazione. I client lato server, in cui la logica dell'applicazione è ospitata su un sistema remoto, possono proteggere le operazioni di autenticazione con l'autorizzazione IAM per le richieste di accesso. Le seguenti coppie di operazioni API e i metodi SDK corrispondenti vengono mappati su ciascuno dei modelli di autorizzazione disponibili.
Per confrontare l'autenticazione delle API e visualizzare un elenco completo delle operazioni API e dei relativi modelli di autorizzazione, consultaComprendere l'API, l'OIDC e l'autenticazione delle pagine di accesso gestite.
L'autenticazione di un utente viene effettuata rispondendo a richieste successive fino a che l'autenticazione non riesce o Amazon Cognito emette token per l'utente. Puoi ripetere questi passaggi con Amazon Cognito, in un processo che include richieste di autenticazione di tipo diverso, per supportare qualsiasi flusso di autenticazione personalizzato.
Argomenti
Opzioni di autenticazione lato server
Le applicazioni Web e altre applicazioni lato server implementano l'autenticazione in una sessione su un server remoto, in genere in un browser che avvia una sessione su quel server. Le applicazioni lato server presentano in genere le seguenti caratteristiche.
-
Sono integrate in un'applicazione installata su un server in linguaggi come Java, Ruby o Node.js.
-
Si connettono a client di app con pool di utenti che potrebbero avere un client segreto, chiamato client riservati.
-
Hanno accesso alle AWS credenziali.
-
Richiamano l'accesso gestito per l'autenticazione o utilizzano operazioni autorizzate da IAM nell'API dei pool di utenti con un SDK. AWS
-
Servono clienti interni e potrebbero servire clienti pubblici.
Le operazioni lato server con l'API dei pool di utenti possono utilizzare password, password monouso o passkey come fattore di accesso principale. Per le app lato server, l'autenticazione dei bacini d'utenza è analoga a quella per le app lato client, con le seguenti eccezioni:
-
L'app lato server effettua una richiesta API. AdminInitiateAuth Questa operazione richiede AWS credenziali con autorizzazioni che includono e.
cognito-idp:AdminInitiateAuth
cognito-idp:AdminRespondToAuthChallenge
L'operazione restituisce il risultato della sfida o dell'autenticazione richiesto. -
Quando l'applicazione riceve una sfida, effettua una richiesta AdminRespondToAuthChallengeAPI. Il funzionamento dell'
AdminRespondToAuthChallenge
API richiede anche AWS credenziali.
Per ulteriori informazioni sulla firma delle richieste API di Amazon Cognito con AWS credenziali, consulta il processo di firma Signature versione 4 nella AWS Guida generale.
Nella risposta di AdminInitiateAuth
ChallengeParameters
, l'attributo USER_ID_FOR_SRP
, se presente, contiene il nome utente reale dell'utente e non un alias (come l'indirizzo e-mail o il numero di telefono). Nella chiamata a AdminRespondToAuthChallenge
, in ChallengeResponses
, è necessario passare questo nome utente nel parametro USERNAME
.
Nota
Poiché le implementazioni degli amministratori di backend utilizzano il flusso di autenticazione dell'amministratore, il flusso non supporta i dispositivi ricordati. Quando abiliti il tracciamento dei dispositivi, l'autenticazione di amministrazione avviene correttamente, ma le chiamate per aggiornare i token di accesso non andranno a buon fine.
Opzioni di autenticazione lato client
Le app mobili e altri tipi di applicazioni lato client installate sui dispositivi degli utenti hanno in genere le seguenti caratteristiche.
-
Sono integrate in linguaggi come React native, Flutter e Swift e vengono distribuite sui dispositivi degli utenti.
-
Si connettono a client di app con pool di utenti che non dispongono di un client segreto, chiamati client pubblici.
-
Non hanno accesso alle AWS credenziali che autorizzerebbero le richieste API autorizzate dall'IAM.
-
Richiamano l'accesso gestito per l'autenticazione o utilizzano operazioni pubbliche e autorizzate da token nell'API dei pool di utenti con un SDK. AWS
-
Servono clienti pubblici e consentono a chiunque di registrarsi e accedere.
Le operazioni lato client con l'API dei pool di utenti possono utilizzare password, password monouso o passkey come fattore di accesso principale. Il processo seguente funziona per le app utente lato client create con o con. AWS AmplifyAWS SDKs
-
L'utente inserisce il nome utente e la password nell'app.
-
L'app chiama l'operazione
InitiateAuth
con il nome utente e i dettagli SRP (Secure Remote Password) dell'utente.Questa operazione API restituisce i parametri di autenticazione.
Nota
L'app genera dettagli SRP con le funzionalità SRP di Amazon Cognito integrate. AWS SDKs
-
L'app chiama l'operazione
RespondToAuthChallenge
. Se la chiamata va a buon fine, Amazon Cognito restituisce i token dell'utente e il flusso di autenticazione è completo.Se Amazon Cognito richiede un ulteriore fattore di autenticazione, la chiamata a
RespondToAuthChallenge
non restituisce token. Invece, la chiamata restituisce una sessione. -
Se
RespondToAuthChallenge
restituisce una sessione, l'app chiama di nuovoRespondToAuthChallenge
, questa volta con la sessione e la risposta alla richiesta di identificazione (ad esempio, il codice MFA).
Comprendere l'API, l'OIDC e l'autenticazione delle pagine di accesso gestite
I pool di utenti di Amazon Cognito sono una combinazione di diverse tecnologie di autenticazione. Si affidano a provider di identità esterni ()IdPs. Si tratta IdPs di applicazioni che implementano l'autenticazione con OpenID Connect (OIDC). SDKs Forniscono l'autenticazione come emittenti di token web JSON (JWTs) in modo simile all'autenticazione OIDC, ma con metodi API che fanno parte di. AWS SDKs Possono anche essere punti di accesso sicuri alle tue applicazioni.
Quando desideri eseguire la registrazione, l'accesso e la gestione di utenti nel pool di utenti, puoi utilizzare due opzioni.
-
Le tue pagine di accesso gestito e la classica interfaccia utente ospitata includono gli endpoint interattivi con accesso gestito e gli endpoint federativi che gestiscono i ruoli IdP e relying-party. Costituiscono un pacchetto di pagine web pubbliche che vengono attivate da Amazon Cognito quando scegli un dominio per il pool di utenti. Per iniziare rapidamente a utilizzare le funzionalità di autenticazione e autorizzazione dei pool di utenti di Amazon Cognito, comprese le pagine per la registrazione, l'accesso, la gestione delle password e l'autenticazione a più fattori (MFA), utilizza l'interfaccia utente integrata dell'accesso gestito.
Gli altri endpoint del pool di utenti facilitano l'autenticazione con provider di identità di terze parti (). IdPs I servizi che vengono eseguiti includono quanto segue.
-
Endpoint di callback del fornitore di servizi per reclami autenticati provenienti da te, come e. IdPs
saml2/idpresponse
oauth2/idpresponse
Quando Amazon Cognito è un provider di servizi (SP) intermedio tra l'app e l'IdP, gli endpoint di callback rappresentano il servizio. -
Endpoint che forniscono informazioni sull'ambiente, ad esempio
oauth2/userInfo
e/.well-known/jwks.json
. La tua app utilizza questi endpoint quando verifica i token o recupera i dati del profilo utente con le librerie per sviluppatori OIDC o 2.0. OAuth
-
-
L'API dei pool di utenti di Amazon Cognito è un set di strumenti per la tua app web o mobile per autenticare gli utenti dopo aver raccolto le informazioni di accesso nel tuo front-end personalizzato. L'autenticazione API dei pool di utenti produce i seguenti token web JSON.
-
Un token di identità con richieste di attributi verificabili da parte dell'utente.
-
Un token di accesso che autorizza l'utente a creare richieste API autorizzate da token a un endpoint di servizio AWS.
Nota
Per impostazione predefinita, i token di accesso dell'autenticazione API dei pool di utenti contengono solo l'ambito
aws.cognito.signin.user.admin
. Se desideri generare un token di accesso con altri ambiti, ad esempio per autorizzare una richiesta a un'API di terze parti, richiedi gli ambiti durante l'autenticazione tramite gli endpoint del pool di utenti o aggiungi ambiti personalizzati in un Trigger Lambda di pre-generazione del token. La personalizzazione dei token di accesso aggiunge costi alla bolletta. AWS -
Un token di aggiornamento che autorizza le richieste di nuovi ID e token di accesso e aggiorna l'identità dell'utente e le proprietà di controllo degli accessi.
-
Puoi collegare un utente federato, che normalmente accede tramite gli endpoint dei pool di utenti, con un utente il cui profilo è locale al pool di utenti. Un utente locale esiste esclusivamente nella directory del pool di utenti senza federazione tramite un IdP esterno. Se colleghi la loro identità federata a un utente locale in una richiesta AdminLinkProviderForUserAPI, possono accedere con l'API dei pool di utenti. Per ulteriori informazioni, consulta Collegamento di utenti federati a un profilo utente esistente.
L'API dei pool di utenti di Amazon Cognito ha un doppio scopo.
-
Consente di creare e configurare le risorse dei pool di utenti di Amazon Cognito. Ad esempio, puoi creare pool di utenti, aggiungere AWS Lambda trigger e configurare il dominio del pool di utenti che ospita le tue pagine di accesso gestite.
-
Esegue la registrazione, l'accesso e altre operazioni utente per utenti locali e collegati.
Scenario di esempio con l'API dei pool di utenti di Amazon Cognito
-
L'utente seleziona il pulsante "Crea un account" creato nell'app. Inserisce un indirizzo e-mail e una password.
-
La tua app invia una richiesta SignUpAPI e crea un nuovo utente nel tuo pool di utenti.
-
L'app richiede all'utente un codice di conferma e-mail. Gli utenti inseriscono il codice ricevuto in un messaggio di posta elettronica.
-
L'app invia una richiesta ConfirmSignUpAPI con il codice di conferma dell'utente.
-
L'app richiede all'utente il nome utente e password. Le relative informazioni vengono inserite.
-
L'app invia una richiesta InitiateAuthAPI e memorizza un token ID, un token di accesso e un token di aggiornamento. L'app chiama le librerie OIDC per gestire i token di un utente e mantenere persistente la sessione dell'utente.
Nell'API dei pool di utenti di Amazon Cognito, non è possibile consentire l'accesso agli utenti che eseguono la federazione tramite un IdP. Questi utenti devono essere autenticati tramite gli endpoint del pool di utenti. Per ulteriori informazioni sugli endpoint del pool di utenti che includono l'accesso gestito, consulta. Endpoint del pool di utenti e riferimento per l'accesso gestito
I tuoi utenti federati possono iniziare dall'accesso gestito e selezionare il loro IdP, oppure puoi saltare l'accesso gestito e inviare gli utenti direttamente al tuo IdP per l'accesso. Quando la richiesta API a Endpoint Authorize include un parametro IdP, Amazon Cognito reindirizza automaticamente l'utente alla pagina di accesso IdP.
Scenario di esempio con pagine di accesso gestite
-
L'utente seleziona il pulsante "Crea un account" creato nell'app.
-
L'accesso gestito presenta all'utente un elenco dei provider di identità social a cui sono state registrate le credenziali di sviluppatore. L'utente sceglie Apple.
-
L'app avvia una richiesta a Endpoint Authorize con il nome di provider
SignInWithApple
. -
Il browser dell'utente apre la pagina di autenticazione Apple. L'utente accede e sceglie di autorizzare Amazon Cognito a leggere le informazioni del proprio profilo.
-
Amazon Cognito conferma il token di accesso Apple ed esegue una query sul profilo Apple dell'utente.
-
L'utente presenta un codice di autorizzazione Amazon Cognito all'app.
-
La libreria OIDC dell'applicazione scambia il codice di autorizzazione con Endpoint Token e memorizza un token ID, un token di accesso e un token di aggiornamento emessi dal pool di utenti. La tua app utilizza le librerie OIDC per gestire i token dell'utente e mantenere una sessione persistente per quell'utente.
L'API dei pool di utenti e le pagine di accesso gestito supportano una varietà di scenari, descritti in questa guida. Nelle sezioni seguenti viene illustrato in che modo l'API dei pool di utenti si divide ulteriormente in classi che supportano i requisiti di registrazione, accesso e gestione delle risorse.
Operazioni API autenticate e non autenticate per pool di utenti di Amazon Cognito
L'API dei pool di utenti di Amazon Cognito, un'interfaccia di gestione delle risorse e un'interfaccia di autenticazione e autorizzazione lato utente, combina i modelli di autorizzazione che seguono le relative operazioni. A seconda dell'operazione API, potrebbe essere necessario fornire l'autorizzazione con credenziali IAM, un token di accesso, un token di sessione, un segreto del client o una combinazione di questi. Per molte operazioni di autenticazione e autorizzazione utente, è possibile scegliere tra versioni autenticate e non autenticate della richiesta. Le operazioni non autenticate sono best practice di sicurezza per le app distribuite agli utenti, come app per dispositivi mobili; non è necessario includere alcun segreto nel codice.
È possibile assegnare autorizzazioni solo nelle policy IAM per Operazioni di gestione autenticate IAM e Operazioni utente autenticate IAM.
Le operazioni di gestione autenticate IAM modificano e visualizzano il pool di utenti e la configurazione del client dell'app, come si farebbe in AWS Management Console.
Ad esempio, per modificare il pool di utenti in una richiesta UpdateUserPoolAPI, devi presentare le AWS credenziali e le autorizzazioni IAM per aggiornare la risorsa.
Per autorizzare queste richieste in AWS Command Line Interface (AWS CLI) o in un AWS SDK, configura il tuo ambiente con variabili di ambiente o una configurazione client che aggiunga credenziali IAM alla tua richiesta. Per ulteriori informazioni, consulta Accesso AWS tramite AWS credenziali in. Riferimenti generali di AWS Puoi anche inviare richieste direttamente agli endpoint del servizio per l'API dei pool di utenti Amazon Cognito. È necessario autorizzare o firmare queste richieste con AWS credenziali da incorporare nell'intestazione della richiesta. Per ulteriori informazioni, consulta Firmare le richieste API. AWS
Operazioni di gestione autenticate IAM |
---|
AddCustomAttributes |
CreateGroup |
CreateIdentityProvider |
CreateResourceServer |
CreateUserImportJob |
CreateUserPool |
CreateUserPoolClient |
CreateUserPoolDomain |
DeleteGroup |
DeleteIdentityProvider |
DeleteResourceServer |
DeleteUserPool |
DeleteUserPoolClient |
DeleteUserPoolDomain |
DescribeIdentityProvider |
DescribeResourceServer |
DescribeRiskConfiguration |
DescribeUserImportJob |
DescribeUserPool |
DescribeUserPoolClient |
DescribeUserPoolDomain |
GetCSVHeader |
GetGroup |
GetIdentityProviderByIdentifier |
GetSigningCertificate |
GetUICustomization |
GetUserPoolMfaConfig |
ListGroups |
ListIdentityProviders |
ListResourceServers |
ListTagsForResource |
ListUserImportJobs |
ListUserPoolClients |
ListUserPools |
ListUsers |
ListUsersInGroup |
SetRiskConfiguration |
SetUICustomization |
SetUserPoolMfaConfig |
StartUserImportJob |
StopUserImportJob |
TagResource |
UntagResource |
UpdateGroup |
UpdateIdentityProvider |
UpdateResourceServer |
UpdateUserPool |
UpdateUserPoolClient |
UpdateUserPoolDomain |
Operazioni utente autenticate IAM: registrazione, accesso, gestione delle credenziali, modifica e visualizzazione degli utenti.
Ad esempio, un livello applicazione lato server potrebbe eseguire il backup di un front-end Web. La tua app lato server è un client OAuth riservato di cui ti fidi con accesso privilegiato alle tue risorse Amazon Cognito. Per registrare un utente nell'app, il server può includere AWS credenziali in una richiesta API. AdminCreateUser Per ulteriori informazioni sui tipi di OAuth client, vedere Tipi di client
Per autorizzare queste richieste nell'SDK AWS CLI o in un AWS SDK, configura l'ambiente dell'app lato server con variabili di ambiente o una configurazione client che aggiunga credenziali IAM alla richiesta. Per ulteriori informazioni, consulta Accesso AWS tramite credenziali in. AWS Riferimenti generali di AWS Puoi anche inviare richieste direttamente agli endpoint del servizio per l'API dei pool di utenti Amazon Cognito. È necessario autorizzare o firmare queste richieste con AWS credenziali da incorporare nell'intestazione della richiesta. Per ulteriori informazioni, consulta Firmare le richieste API. AWS
Se il client dell'app dispone di un segreto del client, devi fornire le tue credenziali IAM e, a seconda dell'operazione, il parametro SecretHash
o il valore SECRET_HASH
in AuthParameters
. Per ulteriori informazioni, consulta Calcolo dei valori SecretHash.
Operazioni utente autenticate IAM |
---|
AdminAddUserToGroup |
AdminConfirmSignUp |
AdminCreateUser |
AdminDeleteUser |
AdminDeleteUserAttributes |
AdminDisableProviderForUser |
AdminDisableUser |
AdminEnableUser |
AdminForgetDevice |
AdminGetDevice |
AdminGetUser |
AdminInitiateAuth |
AdminLinkProviderForUser |
AdminListDevices |
AdminListGroupsForUser |
AdminListUserAuthEvents |
AdminRemoveUserFromGroup |
AdminResetUserPassword |
AdminRespondToAuthChallenge |
AdminSetUserMFAPreference |
AdminSetUserPassword |
AdminSetUserSettings |
AdminUpdateAuthEventFeedback |
AdminUpdateDeviceStatus |
AdminUpdateUserAttributes |
AdminUserGlobalSignOut |
Operazioni utente non autenticate: registrazione, accesso e avvio del ripristino delle password per gli utenti. Utilizza operazioni API non autenticate, o pubbliche, per consentire a chiunque su Internet di eseguire la registrazione e l'accesso all'app.
Ad esempio, per registrare un utente nella tua app, puoi distribuire un client OAuth pubblico che non fornisce alcun accesso privilegiato ai segreti. Puoi registrare questo utente con l'operazione API non autenticata. SignUp
Per inviare queste richieste in un client pubblico sviluppato con un AWS SDK, non è necessario configurare alcuna credenziale. Puoi anche inviare richieste direttamente agli endpoint del servizio per l'API dei pool di utenti Amazon Cognito senza autorizzazione aggiuntiva.
Se il client dell'app dispone di un segreto del client, devi fornire, a seconda dell'operazione, il parametro SecretHash
o il valore SECRET_HASH
in AuthParameters
. Per ulteriori informazioni, consulta Calcolo dei valori SecretHash.
Operazioni utente non autenticate |
---|
SignUp |
ConfirmSignUp |
ResendConfirmationCode |
ForgotPassword |
ConfirmForgotPassword |
InitiateAuth |
Le operazioni utente autorizzate tramite token consentono di disconnettersi, gestire le credenziali, modificare e visualizzare gli utenti dopo che hanno effettuato l'accesso o iniziato il processo di accesso. Utilizza le operazioni API autorizzate tramite token quando non desideri distribuire segreti nella tua app e desideri autorizzare le richieste con le credenziali dell'utente. Se l'utente ha completato l'accesso, devi autorizzare la richiesta API autorizzata tramite token con un token di accesso. Se l'utente sta eseguendo un processo di accesso, devi autorizzare la relativa richiesta API autorizzata tramite token con un token di sessione restituito da Amazon Cognito nella risposta alla richiesta precedente.
Ad esempio, in un client pubblico, potrebbe essere necessario aggiornare il profilo di un utente in modo da limitare l'accesso in scrittura solo al profilo dell'utente. Per effettuare questo aggiornamento, il client può includere il token di accesso dell'utente in una richiesta UpdateUserAttributesAPI.
Per inviare queste richieste in un client pubblico sviluppato con un AWS SDK, non è necessario configurare alcuna credenziale. Includi un parametro AccessToken
o Session
nella richiesta. Puoi anche inviare richieste direttamente agli endpoint del servizio per l'API dei pool di utenti Amazon Cognito. Per autorizzare una richiesta a un endpoint del servizio, includi il token di accesso o sessione nel corpo POST della richiesta.
Per firmare una richiesta API per un'operazione autorizzata tramite token, includi il token di accesso come un'intestazione Authorization
nella richiesta, nel formato Bearer
.<Base64-encoded access token>
Operazioni utente autorizzate tramite token | AccessToken | Sessione |
---|---|---|
RespondToAuthChallenge |
✓ | |
ChangePassword |
✓ | |
GetUser |
✓ | |
UpdateUserAttributes |
✓ | |
DeleteUserAttributes |
✓ | |
DeleteUser |
✓ | |
ConfirmDevice |
✓ | |
ForgetDevice |
✓ | |
GetDevice |
✓ | |
ListDevices |
✓ | |
UpdateDeviceStatus |
✓ | |
GetUserAttributeVerificationCode |
✓ | |
VerifyUserAttribute |
✓ | |
SetUserSettings |
✓ | |
SetUserMFAPreference |
✓ | |
GlobalSignOut |
✓ | |
AssociateSoftwareToken |
✓ | ✓ |
UpdateAuthEventFeedback |
✓ | |
VerifySoftwareToken |
✓ | ✓ |
RevokeToken ¹ |
¹ RevokeToken accetta un token di aggiornamento come parametro. Il token di aggiornamento funge da token di autorizzazione e come risorsa di destinazione.