Impostazioni specifiche dell'applicazione con client di app - 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à.

Impostazioni specifiche dell'applicazione con client di app

Un client dell'app del pool di utenti è una configurazione all'interno di un pool di utenti che interagisce con un'applicazione per dispositivi mobili o Web che esegue l'autenticazione con Amazon Cognito. I client dell'app possono richiamare API operazioni autenticate e non autenticate e leggere o modificare alcuni o tutti gli attributi degli utenti. L'app deve identificarsi con il client dell'app durante le operazioni di registrazione, accesso e gestione delle password dimenticate. Queste API richieste devono includere l'autoidentificazione con un ID client dell'app e l'autorizzazione con un segreto client opzionale. È necessario proteggere qualsiasi client IDs o segreto dell'app in modo che solo le app client autorizzate possano effettuare queste operazioni non autenticate. Inoltre, se configuri l'app per firmare API richieste autenticate con AWS credenziali, devi proteggere le tue credenziali dall'ispezione da parte degli utenti.

È possibile creare più client app per un bacino d'utenza. Un client dell'app potrebbe essere collegato alla piattaforma di codice di un'app o a un tenant separato nel pool di utenti. Ad esempio, puoi creare un'app per un'applicazione lato server e un'app Android diversa. Ogni app ha il proprio ID client.

È possibile applicare le impostazioni per le seguenti funzionalità del pool di utenti a livello di client dell'app:

Tipi di client di app

Quando crei un client per app in Amazon Cognito, puoi precompilare le opzioni in base ai tipi di OAuth client standard, client pubblico e client riservato. Configurare un client riservato con un client secret. Per ulteriori informazioni sui tipi di client, consulta IETF RFC 6749 #2 .1.

Client pubblico

Un client pubblico viene eseguito in un browser o su un dispositivo mobile. Poiché non dispone di risorse affidabili sul lato server, non ha un client secret.

Client riservato

Un client riservato dispone di risorse lato server a cui è possibile affidare un client segreto per operazioni non autenticate. API L'app potrebbe essere eseguita come daemon o script di shell sul server back-end.

Client secret

Un client secret, o password del client, è una stringa fissa che l'app deve utilizzare in tutte le API richieste al client dell'app. Il client dell'app deve avere un client secret per eseguire la concessione di client_credentials. Per ulteriori informazioni, vedere IETFRFC6749 #2 .3.1.

Non puoi modificare il client secret una volta che hai creato un'app. Puoi creare una nuova app con un nuovo client secret se desideri ruotare la chiave privata che stai utilizzando. Puoi anche eliminare un'app per bloccare l'accesso da app che usano l'ID client di quell'app.

È possibile utilizzare un client riservato e un client secret con un'app pubblica. Usa un CloudFront proxy Amazon per aggiungere un proxy SECRET_HASH in transito. Per ulteriori informazioni, consulta Proteggere i client pubblici per Amazon Cognito utilizzando un CloudFront proxy Amazon sul AWS blog.

JSONtoken web

I client dell'app Amazon Cognito possono emettere token JSON Web (JWTs) dei seguenti tipi.

Token di identità (ID)

Una dichiarazione verificabile attestante che l'utente è autenticato dal pool di utenti. OpenID Connect (OIDC) ha aggiunto la specifica del token ID agli standard dei token di accesso e aggiornamento definiti dalla versione 2.0. OAuth Il token ID contiene informazioni sull'identità, come gli attributi utente, che l'app può utilizzare per creare un profilo utente e fornire risorse. Per ulteriori informazioni, consulta Comprensione del token di identità (ID).

Token di accesso

Una dichiarazione verificabile dei diritti di accesso dell'utente. Il token di accesso contiene gli ambiti, una funzionalità di OIDC e 2.0. OAuth L'app può presentare gli ambiti delle risorse di back-end e dimostrare che il pool di utenti ha autorizzato un utente o una macchina ad accedere ai dati da uno API o dai propri dati utente. Un token di accesso con ambiti personalizzati, spesso ottenuto tramite una concessione di credenziali client M2M, autorizza l'accesso a un server di risorse. Per ulteriori informazioni, consulta Comprendere il token di accesso.

Token di aggiornamento

Una dichiarazione crittografata di autenticazione iniziale che l'app può presentare al pool di utenti quando i token dell'utente scadono. Una richiesta refresh-token restituisce token di accesso e ID nuovi e non scaduti. Per ulteriori informazioni, consulta Comprendere il token di aggiornamento.

Puoi impostare la scadenza di questi token per ogni client dell'app dalla scheda Integrazione app del tuo pool di utenti nella console Amazon Cognito.

Termini del client dell'app

I termini seguenti sono proprietà disponibili dei client di app nella console Amazon Cognito.

Richiamata consentita URLs

Un callback URL indica dove l'utente verrà reindirizzato dopo un accesso riuscito. Scegli almeno una callback. URL La richiamata deveURL:

  • Sii un assolutoURI.

  • Deve essere preregistrato con un client.

  • Non deve includere un componente di frammento.

Vedi OAuth2.0 - endpoint di reindirizzamento.

Amazon Cognito richiede HTTPS su HTTP tranne che per http://localhost a solo scopo di test.

myapp://exampleSono supportati anche i callback delle app, URLs ad esempio.

Disconnessione consentita URLs

Una disconnessione URL indica dove l'utente deve essere reindirizzato dopo la disconnessione.

Autorizzazioni di lettura e scrittura dell'attributo

Il tuo pool di utenti potrebbe avere molti clienti, ognuno con il proprio client di app e. IdPs Puoi configurare il client dell'app in modo che abbia accesso in lettura e scrittura solo agli attributi utente pertinenti all'app. In casi come l'autorizzazione machine-to-machine (M2M), puoi concedere l'accesso a nessuno dei tuoi attributi utente.

Considerazioni sulla configurazione delle autorizzazioni di lettura e scrittura degli attributi
  • Quando crei un client per app e non personalizzi le autorizzazioni di lettura e scrittura degli attributi, Amazon Cognito concede le autorizzazioni di lettura e scrittura a tutti gli attributi del pool di utenti.

  • Puoi concedere l'accesso in scrittura ad attributi personalizzati non modificabili. Il client dell'app può scrivere valori in attributi immutabili quando crei o registri un utente. Dopodiché, non puoi scrivere valori in alcun attributo personalizzato non modificabile per l'utente.

  • I client dell'app devono avere accesso in scrittura agli attributi richiesti nel pool di utenti. La console Amazon Cognito imposta automaticamente gli attributi richiesti come scrivibili.

  • Non puoi consentire a un client dell'app di avere accesso in scrittura a email_verified o a phone_number_verified. Un amministratore del pool di utenti può modificare questi valori. Un utente può modificare il valore di questi attributi solo tramite la verifica degli attributi.

Flusso di autenticazione

I metodi di accesso consentiti dal client dell'app. L'app può supportare l'autenticazione con nome utente e password, Secure Remote Password (SRP), l'autenticazione personalizzata con trigger Lambda e l'aggiornamento dei token. Come migliore pratica di sicurezza, utilizza l'SRPautenticazione come metodo di accesso principale. L'interfaccia utente ospitata accede automaticamente agli utenti conSRP.

Ambiti personalizzati

Un ambito personalizzato è quello che viene definito per il proprio server di risorse nella scheda Resource Servers (Server di Risorse). Il formato è resource-server-identifier/scope. VediScopes, M2M e APIs con server di risorse.

Reindirizzamento predefinito URI

Sostituisce il redirect_uri parametro nelle richieste di autenticazione per gli utenti con terze parti. IdPs Configura questa impostazione del client dell'app con il DefaultRedirectURI parametro di una UpdateUserPoolClientAPIrichiesta CreateUserPoolClientor. Questo URL deve anche essere un membro del client CallbackURLs for your app. Amazon Cognito reindirizza le sessioni autenticate a questo indirizzo quando: URL

  1. Al client dell'app è assegnato un provider di identità e sono stati definiti più callback. URLs Il pool di utenti reindirizza le richieste di autenticazione al server di autorizzazione al reindirizzamento predefinito URI quando non includono un parametro. redirect_uri

  2. Al client dell'app è assegnato un provider di identità e viene definito un callback. URLs In questo scenario non è necessario definire un callback URL predefinito. Le richieste che non includono un redirect_uri parametro reindirizzano a quella callback disponibile. URL

Provider di identità

Puoi scegliere alcuni o tutti i provider di identità esterni del tuo pool di utenti (IdPs) per autenticare i tuoi utenti. Il client di app può inoltre autenticare solo gli utenti locali del pool di utenti. Quando si aggiunge un provider di identità al client di app, è possibile generare link di autorizzazione per l'IdP e visualizzarli nella pagina di accesso dell'interfaccia utente ospitata. È possibile assegnarne più di uno IdPs, ma è necessario assegnarne almeno uno. Per ulteriori informazioni sull'utilizzo di dispositivi esterni IdPs, vedere. Aggiunta di un accesso al bacino d'utenza tramite terze parti

Ambiti OpenID Connect

Scegli uno o più dei seguenti ambiti OAuth per specificare i privilegi di accesso che possono essere richiesti per i token d'accesso.

  • L'ambito openid dichiara che desideri recuperare un token ID e l'ID univoco di un utente. Richiede inoltre tutti o alcuni attributi utente, a seconda degli ambiti aggiuntivi nella richiesta. Amazon Cognito non restituisce un token ID a meno che non venga richiesto l'ambito openid. L'ambito openid autorizza le attestazioni dei token ID strutturali come la scadenza e l'ID chiave e determina gli attributi utente che ricevi in una risposta da userInfo endpoint.

    • Quando openid è l'unico ambito richiesto, Amazon Cognito popola il token ID con tutti gli attributi utente che il client dell'app corrente è in grado di leggere. La risposta userInfo a un token di accesso con questo ambito restituisce tutti gli attributi utente.

    • Quando richiedi openid con altri ambiti come phone, email o profile, il token ID e userInfo restituiscono l'ID univoco dell'utente e gli attributi definiti dagli ambiti aggiuntivi.

  • L'ambito phone permette l'accesso alle richieste phone_number e phone_number_verified. Questo ambito può essere richiesto solo con l'ambito openid.

  • L'ambito email permette l'accesso alle richieste email e email_verified. Questo ambito può essere richiesto solo con l'ambito openid.

  • L'aws.cognito.signin.user.adminambito consente l'accesso ai APIpool di utenti di Amazon Cognito, operazioni che richiedono token di accesso, come e. UpdateUserAttributesVerifyUserAttribute

  • L'ambito profile permette l'accesso a tutti gli attributi dell'utente negli ID token che sono leggibili dal client. Questo ambito può essere richiesto solo con l'ambito openid.

Per ulteriori informazioni sugli ambiti, consulta l'elenco degli ambiti standard. OIDC

OAuthtipi di sovvenzione

Una OAuth concessione è un metodo di autenticazione che recupera i token del pool di utenti. Amazon Cognito supporta i seguenti tipi di concessioni. Per integrare queste OAuth concessioni nella tua app, devi aggiungere un dominio al tuo pool di utenti.

Concessione codice autorizzazione

La concessione del codice di autorizzazione genera un codice che l'app può scambiare con i token del pool di utenti con Endpoint Token. Durante lo scambio di un codice di autorizzazione, l'app riceve token ID, di accesso e di aggiornamento. Questo OAuth flusso, come la concessione implicita, avviene nei browser degli utenti. La concessione di un codice di autorizzazione è la concessione più sicura offerta da Amazon Cognito, poiché i token non sono visibili nelle sessioni degli utenti. Invece, l'app genera la richiesta che restituisce i token e può memorizzarli nella cache in uno spazio di archiviazione protetto. Per ulteriori informazioni, vedere Codice di autorizzazione in IETFRFC6749 #1 .3.1

Nota

Come migliore pratica di sicurezza nelle app per client pubblici, attiva solo il OAuth flusso di concessione del codice di autorizzazione e implementa Proof Key for Code Exchange () per limitare lo scambio di token. PKCE ConPKCE, un client può scambiare un codice di autorizzazione solo dopo aver fornito all'endpoint del token lo stesso segreto presentato nella richiesta di autenticazione originale. Per ulteriori informazioni suPKCE, vedere IETFRFC7636.

Implicit grant (Concessione implicita)

La concessione implicita fornisce un token di accesso e ID, ma non un token di aggiornamento, alla sessione del browser dell'utente direttamente da Endpoint Authorize. Una concessione implicita rimuove il requisito di una richiesta separata all'endpoint del token, ma non è compatibile PKCE e non restituisce i token di aggiornamento. Questa concessione supporta scenari di test e architetture di app che non consentono di completare la concessione di codici di autorizzazione. Per ulteriori informazioni, vedere Concessione implicita in 6749 #1 .3.2. IETF RFC Puoi attivare sia la concessione del codice di autorizzazione sia la concessione implicita in un client dell’app e usare entrambe in base alle esigenze.

Concessione credenziali del client

La concessione delle credenziali del client è per le comunicazioni machine-to-machine (M2M). Il codice di autorizzazione e le concessioni implicite emettono token a utenti umani autenticati. Le credenziali del client concedono l'autorizzazione basata sull'ambito da un sistema non interattivo a un. API L'app può richiedere le credenziali del client direttamente dall'endpoint del token e ricevere un token di accesso. Per ulteriori informazioni, vedere Credenziali del client in 6749 #1 .3.4. IETF RFC È possibile attivare la concessione di credenziali client solo nei client di app che dispongono di un client secret e che non supportano il codice di autorizzazione o le concessioni implicite.

Nota

Poiché il flusso di credenziali del client non viene richiamato come un utente, questa concessione può solo aggiungere ambiti personalizzati per accedere ai token. Un ambito personalizzato è quello che viene definito per il proprio server di risorse. Gli ambiti predefiniti come openid e profile non si applicano agli utenti non umani.

Poiché i token ID sono una convalida degli attributi utente, non sono rilevanti per la comunicazione M2M e una concessione delle credenziali del client non li rilascia. Per informazioni, consulta Scopes, M2M e APIs con server di risorse.

Le credenziali del cliente garantiscono costi aggiuntivi alla fattura. AWS Per ulteriori informazioni, consultare Prezzi di Amazon Cognito.

Creazione di un client dell'app

AWS Management Console
Come creare un client dell'app (console)
  1. Passa alla console Amazon Cognito. Se richiesto, inserisci le tue credenziali. AWS

  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. Seleziona un App type (Tipo di App): Public client (Client pubblico), Confidential client (Client riservato), oppure Other (Altro).

  7. Inserisci un nome del client dell'App.

  8. Scegli Genera segreto del client per fare in modo che Amazon Cognito generi automaticamente un segreto del client. I segreti client sono generalmente associati ai client riservati.

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

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

  11. (Facoltativo) Se desideri configurare la scadenza dei token, completa la procedura seguente:

    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.

  12. Scegli se desideri abilitare la revoca dei token per questo client dell'App. Ciò aumenterà la dimensione dei token emessi da Amazon Cognito.

  13. Scegli se desideri prevenire errori di presenza degli utenti per questo client di 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. Se desideri utilizzare l'interfaccia utente ospitata con questo client di app, configura Impostazioni dell'interfaccia utente ospitata.

    1. Inserisci uno o più callback consentiti. URLs Si tratta del sito Web o dell'app su URLs cui desideri che Amazon Cognito reindirizzi gli utenti dopo aver completato l'autenticazione.

    2. Inserisci una o più uscite consentite. URLs Questi sono quelli URLs che vuoi che la tua app accetti nelle richieste inviate a. Endpoint Logout

    3. Scegli uno o più provider di identità per consentire l’accesso degli utenti alla tua app. Puoi scegliere qualsiasi combinazione di opzioni esistenti IdPs. Puoi autenticare gli utenti solo con il tuo pool di utenti o con una o più terze parti IdPs configurate nel tuo pool di utenti.

    4. Scegli i tipi di concessione OAuth 2.0 che desideri che il client dell'app accetti.

      • Seleziona Concessione del codice di autorizzazione per trasferire i codici all’app che può riscattare in token con Endpoint Token.

      • Seleziona Concessione implicita per passare token ID e di accesso direttamente all’app. Il flusso di concessione implicita espone i token direttamente agli utenti.

      • Seleziona Credenziali del client per passare i token di accesso all’app in base alla sua conoscenza non delle credenziali utente, ma del segreto del client. Il flusso di concessione delle credenziali del cliente è reciprocamente esclusivo con il codice di autorizzazione e i flussi di concessione implicita.

    5. Seleziona gli Ambiti OpenID Connect che intendi autorizzare per l’utilizzo con questo client di app. È possibile generare token di accesso solo con l'aws.cognito.signin.user.adminambito tramite i pool API di utenti. Per ambiti aggiuntivi, occorre richiedere i token di accesso dal Endpoint Token.

    6. Scegli gli Ambiti personalizzati che intendi autorizzare con il client di app. Gli ambiti personalizzati vengono spesso utilizzati per autorizzare l'accesso a terze parti. APIs

  15. Configura Autorizzazioni di lettura e scrittura degli attributi per questo client di app. Il client di app può disporre dell'autorizzazione per leggere e scrivere tutto, o un sottoinsieme limitato dello, schema degli attributi del pool di utenti.

  16. Scegli Create app client (Crea client dell'app).

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

AWS CLI
aws cognito-idp create-user-pool-client --user-pool-id MyUserPoolID --client-name myApp
Nota

Usa il JSON format per il callback e il logout URLs per evitare che li trattino come file CLI di parametri remoti:

--callback-urls "["https://example.com"]" --logout-urls "["https://example.com"]"

Per ulteriori informazioni, consulta il riferimento ai AWS CLI comandi: create-user-pool-client

Amazon Cognito user pools API

Genera una CreateUserPoolClientAPIrichiesta. È necessario specificare un valore per tutti i parametri che non si desidera impostare su un valore predefinito.

Aggiornamento di un client di app per pool di utenti (AWS CLI e AWS API)

Al AWS CLI, inserisci il seguente comando:

aws cognito-idp update-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"

Se il comando ha esito positivo, AWS CLI restituisce una conferma:

{ "UserPoolClient": { "ClientId": "MyClientID", "SupportedIdentityProviders": [ "LoginWithAmazon", "MySAMLIdP" ], "CallbackURLs": [ "https://example.com" ], "AllowedOAuthScopes": [ "openid" ], "ClientName": "Example", "AllowedOAuthFlows": [ "implicit", "code" ], "RefreshTokenValidity": 30, "AuthSessionValidity": 3, "CreationDate": 1524628110.29, "AllowedOAuthFlowsUserPoolClient": true, "UserPoolId": "MyUserPoolID", "LastModifiedDate": 1530055177.553 } }

Per ulteriori informazioni, vedere il riferimento ai AWS CLI comandi: update-user-pool-client.

AWS API: UpdateUserPoolClient

Ottenere informazioni su un client di app per pool di utenti (AWS CLI e AWS API)

aws cognito-idp describe-user-pool-client --user-pool-id MyUserPoolID --client-id MyClientID

Vedi il riferimento ai AWS CLI comandi per ulteriori informazioni: describe-user-pool-client.

AWS API: DescribeUserPoolClient

Elenco di tutte le informazioni sul client dell'app in un pool di utenti (AWS CLI e AWS API)

aws cognito-idp list-user-pool-clients --user-pool-id "MyUserPoolID" --max-results 3

Vedi il riferimento ai AWS CLI comandi per ulteriori informazioni: list-user-pool-clients.

AWS API: ListUserPoolClients

Eliminazione di un client di app per pool di utenti (AWS CLI e AWS API)

aws cognito-idp delete-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID"

Per ulteriori informazioni, consulta il riferimento ai AWS CLI comandi: delete-user-pool-client

AWS API: DeleteUserPoolClient