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:
-
Interfaccia utente ospitata IdPs, tipi di concessione, callback URLs e personalizzazione
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
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
suHTTP
tranne che perhttp://localhost
a solo scopo di test.myapp://example
Sono 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 aphone_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 ilDefaultRedirectURI
parametro di una UpdateUserPoolClientAPIrichiesta CreateUserPoolClientor. Questo URL deve anche essere un membro del clientCallbackURLs
for your app. Amazon Cognito reindirizza le sessioni autenticate a questo indirizzo quando: URL-
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
-
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'ambitoopenid
. L'ambitoopenid
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 rispostauserInfo
a un token di accesso con questo ambito restituisce tutti gli attributi utente. -
Quando richiedi
openid
con altri ambiti comephone
,email
oprofile
, il token ID euserInfo
restituiscono l'ID univoco dell'utente e gli attributi definiti dagli ambiti aggiuntivi.
-
-
L'ambito
phone
permette l'accesso alle richiestephone_number
ephone_number_verified
. Questo ambito può essere richiesto solo con l'ambitoopenid
. -
L'ambito
email
permette l'accesso alle richiesteemail
eemail_verified
. Questo ambito può essere richiesto solo con l'ambitoopenid
. -
L'
aws.cognito.signin.user.admin
ambito 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'ambitoopenid
.
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
eprofile
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
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-idMyClientID
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