Gestione dell'interfaccia utente e del server di autorizzazione ospitati - 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à.

Gestione dell'interfaccia utente e del server di autorizzazione ospitati

Un pool di utenti Amazon Cognito con un dominio è un server di autorizzazione OAuth conforme a -2.0 e un'interfaccia utente ready-to-use ospitata (UI) per l'autenticazione. Il server di autorizzazione indirizza le richieste di autenticazione, emette e gestisce i token JSON web (JWTs) e fornisce informazioni sugli attributi utente. L'interfaccia utente ospitata è una raccolta di interfacce Web per attività di base di registrazione, accesso, autenticazione a più fattori e reimpostazione della password nel pool di utenti. È anche un hub centrale per l'autenticazione con i provider di identità di terze parti (IdPs) associati alla tua app. L'app può richiamare l'interfaccia utente ospitata e gli endpoint di autorizzazione quando desideri autenticare e autorizzare gli utenti. Puoi adattare l'esperienza utente dell'interfaccia utente ospitata al tuo marchio con il tuo logo e la tua CSS personalizzazione. Per ulteriori informazioni sui componenti dell'interfaccia utente ospitata e del server di autorizzazione, consulta Endpoint del pool di utenti e riferimento all'interfaccia utente ospitata.

Nota

L'interfaccia utente ospitata di Amazon Cognito non supporta l'autenticazione personalizzata con trigger Lambda di richiesta di autenticazione personalizzati.

Configurazione dell'interfaccia utente ospitata con AWS Amplify

Se utilizzi l'autenticazione AWS Amplify per aggiungere l'autenticazione alla tua app web o mobile, puoi configurare l'interfaccia utente ospitata utilizzando l'interfaccia a riga di comando (CLI) e le librerie del AWS Amplify framework. Per aggiungere l'autenticazione alla tua app, usa l'opzione AWS Amplify CLI per aggiungere la Auth categoria al tuo progetto. Quindi, nel codice client, usi le AWS Amplify librerie per autenticare gli utenti con il tuo pool di utenti Amazon Cognito.

Puoi visualizzare un'interfaccia utente ospitata preconfigurata oppure puoi federare gli utenti tramite un endpoint OAuth 2.0 che reindirizza a un provider di accesso social, come Facebook, Google, Amazon o Apple. Dopo che un utente si è autenticato con successo con il social provider, AWS Amplify crea un nuovo utente nel tuo pool di utenti, se necessario, e quindi fornisce il token dell'utente alla tua app. OIDC

Gli esempi seguenti mostrano come AWS Amplify configurare l'interfaccia utente ospitata con i provider di social network nell'app.

Configurazione dell'interfaccia utente ospitata con la console Amazon Cognito

Creazione di un client dell'App
  1. Passa alla console Amazon Cognito. Se richiesto, inserisci le tue AWS credenziali.

  2. Scegli User Pools (Pool di utenti).

  3. Scegli un bacino d'utenza esistente dall'elenco o creane uno nuovo.

  4. Seleziona la scheda App integration (Integrazione App).

  5. Alla voce App clients (Client dell'App), seleziona Create an App client (Crea un client dell'App).

  6. Selezionare un App type (Tipo di App): Public client (Client pubblico), Confidential client (Client riservato), oppure Other (Altro). Un client pubblico in genere funziona dai dispositivi degli utenti e utilizza sistemi non autenticati e autenticati tramite token. APIs Un client riservato in genere opera da un'app su un server centrale di cui ti fidi con segreti e API credenziali del client e utilizza intestazioni e credenziali di autorizzazione per firmare le richieste. AWS Identity and Access Management Se il tuo caso d'uso è diverso dalle impostazioni preconfigurate del client dell'App per un Public client (Client pubblico) o Confidential client (Client riservato), seleziona Other (Altro).

  7. Inserisci un nome del client dell'App.

  8. Seleziona i Authentication flows (Flussi di autenticazione) che desideri per entrare nel tuo client App.

  9. Configurazione di Authentication flow session duration (Durata della sessione del flusso di autenticazione). Questo è il tempo a disposizione degli utenti per completare ogni verifica di autenticazione prima della scadenza del token di sessione.

  10. (Facoltativo) Configura la scadenza del token.

    1. Specifica la scadenza del token di aggiornamento del client dell'App. Il valore predefinito è 30 giorni. Puoi modificarlo con qualsiasi valore compreso tra 1 ora e 10 anni.

    2. Specifica la scadenza del token di accesso del client dell'App. Il valore predefinito è 1 ora. Puoi modificarlo con qualsiasi valore compreso tra 5 minuti e 24 ore.

    3. Specifica la scadenza del token ID del client dell'App. Il valore predefinito è 1 ora. Puoi modificarlo con qualsiasi valore compreso tra 5 minuti e 24 ore.

      Importante

      Se utilizzi l'interfaccia utente ospitata e configuri un valore minimo inferiore a un'ora per i token, l'utente sarà in grado di utilizzare i token in base alla durata dei cookie di sessione, attualmente impostata su un'ora.

  11. Scegli Generate client secret (Genera segreto client) per fare in modo che Amazon Cognito generi un segreto client per te. I segreti client sono generalmente associati ai client riservati.

  12. Scegli se vuoi abilitare l'opzione Enable token revocation (Abilita la revoca dei token) per questo client dell'App. Ciò aumenterà le dimensioni dei token. Per ulteriori informazioni, consulta Revoking Tokens (Revoca dei token).

  13. Scegli se desideri impedire messaggi di errore che rivelano l'esistenza dell'utente per questo client dell'App. Amazon Cognito risponderà alle richieste di accesso per utenti inesistenti con un messaggio generico che indica che il nome utente o la password non erano corretti.

  14. (Facoltativo) Configura le autorizzazioni di lettura e scrittura dell'attributo) per questo client dell'App. Il client dell'App può avere l'autorizzazione di leggere e scrivere solo un sottoinsieme limitato dello schema degli attributi del bacino d'utenza.

  15. Scegli Create (Crea).

  16. Fai attenzione all'ID client. Questo identificherà il client dell'App nelle richieste di registrazione e di accesso.

Configurazione dell'app
  1. Nella scheda App integration (Integrazione app), seleziona il client dell'App alla voce App clients (Client dell'app). Controlla le informazioni attuali sull'Hosted UI (Interfaccia utente ospitata).

  2. Aggiungi una richiamata in Richiamate URL consentite. URL Un callback URL è il punto a cui l'utente viene reindirizzato dopo un accesso riuscito.

  3. Aggiungi una disconnessione URL in Uscite consentite. URL Una disconnessione URL è il punto a cui l'utente viene reindirizzato dopo la disconnessione.

  4. Aggiungere almeno una delle voci dell'elenco di opzioni elencate in Identity providers (Provider di identità).

  5. Nei tipi di concessione OAuth 2.0, seleziona Concessione del codice di autorizzazione per restituire un codice di autorizzazione che viene poi scambiato con i token del pool di utenti. Poiché i token non vengono mai esposti direttamente a un utente finale, vi sono meno probabilità che vengano compromessi. Tuttavia, per un'applicazione personalizzata è obbligatorio nel back-end scambiare il codice di autorizzazione per i token dei bacini d'utenza. Per motivi di sicurezza, ti consigliamo di utilizzare il flusso di concessione del codice di autorizzazione, insieme alla chiave Proof for code Exchange (PKCE), per le app mobili.

  6. In base ai tipi di concessione OAuth 2.0, seleziona Concessione implicita per farti restituire i token JSON web del pool di utenti (JWT) da Amazon Cognito. È possibile usare questo flusso quando non è disponibile un back-end per scambiare un codice di autorizzazione per i token. È inoltre utile per il debug dei token.

  7. È possibile abilitare sia la Authorization code grant (Concessione del codice di autorizzazione) sia la Implicit code grant (Concessione implicita del codice) e usare entrambe in base alle esigenze. Se né il le concessioni per il Codice di autorizzazione né quelle per il Codice implicito sono selezionate e il client dell'app ha un segreto client, puoi abilitare le concessioni delle Client credentials (Credenziali del client). Seleziona le Client credentials (Credenziali del client) solo se è necessario che l'app richieda i token di accesso a proprio nome e non a nome di un utente.

  8. Seleziona gli OpenID Connect scopes (ambiti di OpenID Connect) che intendi autorizzare per questo client dell'app.

  9. Scegli Save changes (Salva modifiche).

Configura un dominio
  1. Passa alla scheda App Integration (Integrazione App) per il bacino d'utenza.

  2. Accanto a Dominio, seleziona Operazioni, quindi seleziona Create custom domain (Crea dominio personalizzato) o Create Cognito domain (Crea dominio Cognito). Se hai già configurato un dominio del bacino d'utenza, scegli l'opzione Delete Cognito domain (Elimina dominio Cognito) o Delete custom domain (Elimina dominio personalizzato) prima di creare un nuovo dominio personalizzato.

  3. Inserisci un prefisso dominio disponibile da utilizzare con un Dominio Cognito. Per informazioni sulla configurazione di un Dominio personalizzato, consulta la sezione Utilizzo del proprio dominio per l'interfaccia utente ospitata

  4. Scegli Create (Crea).

Visualizzazione della pagina di accesso

Nella console Amazon Cognito, seleziona il pulsante View Hosted UI (Visualizza l'interfaccia utente ospitata), nell'area App clients and analytics (Client di app e analisi dei dati) nella scheda App integration (Integrazione app). Questo pulsante ti reindirizza alla pagina di accesso nell'interfaccia utente ospitata con i seguenti parametri di base.

  • ID del client dell'app

  • Richiesta di concessione del codice di autorizzazione

  • Richiesta per tutti gli ambiti attivati per il client dell'app corrente

  • La prima callback URL nell'elenco per il client dell'app corrente

Il pulsante View hosted UI (Visualizza l'interfaccia utente ospitata) è utile quando si desidera testare le funzioni di base dell'interfaccia utente ospitata. Puoi personalizzare il tuo accesso URL con parametri aggiuntivi e modificati. Nella maggior parte dei casi, i parametri generati automaticamente dal link View hosted UI (Visualizza l'interfaccia utente ospitata) non soddisfano completamente le esigenze della app. In questi casi, devi personalizzare il comando URL che l'app richiama quando accede agli utenti. Per ulteriori informazioni sui parametri di accesso e sui relativi valori, consulta Endpoint del pool di utenti e riferimento all'interfaccia utente ospitata.

La pagina Web di accesso all'interfaccia utente ospitata utilizza il seguente formato. URL In questo esempio viene richiesta una concessione del codice di autorizzazione con il parametro response_type=code.

https://<your domain>/oauth2/authorize?response_type=code&client_id=<your app client id>&redirect_uri=<your callback url>

Puoi recuperare la stringa di dominio del pool di utenti dalla scheda Integrazione di app. Nella stessa scheda, puoi identificare il client dell'app, il relativo callback IDsURLs, gli ambiti consentiti e altre configurazioni in Client e analisi dell'app.

Quando si accede all'endpoint /oauth2/authorize con i parametri personalizzati, Amazon Cognito ti reindirizza all'endpoint /oauth2/login o, se è presente un parametro identity_provider o idp_identifier, ti reindirizza in modalità invisibile all'utente alla pagina di accesso del gestore dell'identità digitale (IdP). Per un esempio URL che ignora l'interfaccia utente ospitata, vedi. SAMLavvio della sessione nei pool di utenti di Amazon Cognito

Esempio di richiesta di interfaccia utente ospitata per una concessione implicita

È possibile visualizzare la pagina Web di accesso all'interfaccia utente ospitata con quanto segue URL per la concessione implicita del codice where. response_type=token Dopo aver eseguito correttamente l'accesso, Amazon Cognito restituisce i token del bacino d'utenza alla barra degli indirizzi del browser Web.

https://mydomain.us-east-1.amazoncognito.com/authorize?response_type=token&client_id=1example23456789&redirect_uri=https://mydomain.example.com

I token di identità e accesso vengono visualizzati come parametri aggiunti al reindirizzamento. URL

Di seguito è riportato un esempio di risposta da una richiesta di concessione implicita.

https://mydomain.example.com/#id_token=eyJraaBcDeF1234567890&access_token=eyJraGhIjKlM1112131415&expires_in=3600&token_type=Bearer

Cose da sapere sull'interfaccia utente ospitata e sul server di autorizzazione

L'interfaccia utente ospitata e la conferma degli utenti come amministratore

Per gli utenti locali del pool di utenti, l'interfaccia utente ospitata funziona meglio quando si configura il pool di utenti su Consenti a Cognito di inviare automaticamente messaggi per la verifica e la conferma. Quando abiliti questa impostazione, Amazon Cognito invia un messaggio con un codice di conferma agli utenti che effettuano la registrazione. Quando invece confermi gli utenti come un amministratore del pool di utenti, l'interfaccia utente ospitata visualizza un messaggio di errore dopo la registrazione. In questo stato, Amazon Cognito ha creato il nuovo utente, ma non è stato in grado di inviare un messaggio di verifica. Puoi comunque confermare gli utenti come un amministratore, ma potrebbero contattare il supporto tecnico dopo che hanno rilevato un errore. Per ulteriori informazioni sulla conferma amministrativa, consulta Permettere agli utenti di registrarsi ma confermarli come un amministratore del pool di utenti.

Visualizzazione delle modifiche alla configurazione dell'interfaccia utente ospitata

Se le modifiche alle pagine dell'interfaccia utente ospitata non vengono visualizzate immediatamente, attendi qualche minuto, quindi aggiorna la pagina.

Decodifica dei token del pool di utenti

I token del pool di utenti di Amazon Cognito vengono firmati utilizzando un algoritmo. RS256 Puoi decodificare e verificare i token del pool di utenti utilizzando AWS Lambda, vedi Decodificare e verificare i token Amazon Cognito su. JWT GitHub

L'interfaccia utente e la versione ospitate TLS

L'interfaccia utente ospitata richiede la crittografia in transito. I domini del pool di utenti forniti da Amazon Cognito richiedono una versione TLS minima di 1.2. I domini personalizzati supportano ma non richiedono TLS la versione 1.2. Poiché Amazon Cognito gestisce la configurazione dell'interfaccia utente ospitata e degli endpoint del server di autorizzazione, non puoi modificare TLS i requisiti del dominio del tuo pool di utenti.

L'interfaccia utente e le politiche ospitate CORS

L'interfaccia utente ospitata da Amazon Cognito non supporta politiche di origine personalizzate per la condivisione delle risorse tra le origini (CORS). Una CORS policy nell'interfaccia utente ospitata impedirebbe agli utenti di passare i parametri di autenticazione nelle loro richieste. Implementa invece una CORS policy nell'interfaccia web della tua app. Amazon Cognito restituisce un'intestazione di Access-Control-Allow-Origin: * risposta alle richieste ai seguenti endpoint. OAuth

Cookie dell'interfaccia utente e del server di autorizzazione ospitati

Gli endpoint del pool di utenti di Amazon Cognito impostano i cookie nei browser degli utenti. I cookie sono conformi ai requisiti di alcuni browser in base ai quali i siti non impostano cookie di terze parti. Sono limitati solo agli endpoint del pool di utenti e includono quanto segue:

  • Un XSRF-TOKEN cookie per ogni richiesta.

  • Un csrf-state cookie per la coerenza della sessione quando un utente viene reindirizzato.

  • Un cookie cognito di sessione che conserva i tentativi di accesso riusciti per un'ora.

In iOS, puoi bloccare tutti i cookie. Questa impostazione non è compatibile con l'interfaccia utente ospitata. Per lavorare con utenti che potrebbero abilitare questa impostazione, crea l'autenticazione del pool di utenti in un'app iOS nativa con un AWS SDK. In questo scenario, puoi creare un archivio di sessione personalizzato che non sia basato sui cookie.