Come posso utilizzare i pool di identità di Amazon Cognito per concedere agli utenti l'accesso ai servizi AWS?

3 minuti di lettura
0

Desidero utilizzare i pool di utenti di Amazon Cognito per consentire agli utenti di accedere alle risorse AWS.

Risoluzione

È possibile integrare i pool di identità di Amazon Cognito con i pool di utenti di Amazon Cognito per rilasciare credenziali temporanee per accedere alle risorse AWS. Configura un provider di autenticazione configurando un pool di identità con un pool di utenti. Dopo aver autenticato un utente tramite il pool di utenti, utilizza il token di identità utente con un flusso di autenticazione per recuperare le credenziali temporanee dal pool di identità. Per recuperare le credenziali temporanee, è possibile utilizzare un flusso di autenticazione di base o un flusso di autenticazione avanzato.

Importante: nei seguenti comandi di esempio dell'Interfaccia della linea di comando AWS (AWS CLI), sostituisci tutte le istanze di stringhe di esempio con i valori in tuo possesso. (Ad esempio, sostituisci "example_identity_pool_id" con l'ID del tuo pool di identità, oppure "abcdef" con l'ID di identità della tua regione AWS.)

Flusso di base

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Esegui i seguenti passaggi per recuperare le credenziali AWS temporanee utilizzando il flusso di autenticazione di base:

1.    Dalla vecchia console Amazon Cognito, seleziona Manage Identity Pools (Gestisci pool di identità). Seleziona il nome del pool di identità di Amazon Cognito che stai aggiornando, quindi scegli Edit identity pool (Modifica pool di identità). In Authentication flow settings (Impostazioni del flusso di autenticazione), seleziona Allow Basic (Classic) Flow [Consenti flusso di base (classico)], quindi salva le modifiche.

2.    Per generare o recuperare un'identità utente nel pool di identità, chiama l'API GetId.

Esempio di comando get-id:

aws cognito-identity get-id --identity-pool-id "example_identity_pool_id" --logins cognito-idp.example_region.amazonaws.com/example_cognito_user_pool_id=example_cognito_user_id_token

Esempio di output:

{
    "IdentityId": "region:abcdef"
}

3.    Per recuperare il token ID aperto, utilizza il risultato del passaggio 2 per chiamare l'API GetOpenIdToken.

Esempio di comando get-open-id-token:

aws cognito-identity get-open-id-token --identity-id "region:abcdef" --logins cognito-idp.example_region.amazonaws.com/example_user_pool_id=example_cognito_user_id_token

Esempio di output:

{
    "IdentityId": "region:abcdef",
    "Token": "HIJKLMN"
}

4.    Per recuperare le credenziali temporanee del ruolo autenticato, utilizza il token del passaggio 3 per chiamare l'API AssumeRoleWithWebIdentity.

Esempio di comando assume-role-with-web-identity:

aws sts assume-role-with-web-identity --role-arn "example_auth_role_arn_of_the_identity_pool" --web-identity-token "HIJKLMN" --role-session-name "example_session_name"

Esempio di output:

{
    "Credentials": {
        AccessKeyId": "xxxxxxxxxxxx",
        SecretAccessKey": "xxxxxxxxxxxx",
        SessionToken": "xxxxxxxxxxxx",
        Expiration": ""
    },
    "SubjectFromWebIdentityToken": "",
    "AssumedRoleUser": {
        "AssumedRoleId": "",
        "Arn": ""
    },
    "Provider": "cognito-identity.amazonaws.com",
    "Audience": ""
}

Flusso avanzato

Esegui i seguenti passaggi per recuperare le credenziali AWS temporanee utilizzando il flusso di autenticazione avanzato:

1.    Per generare o recuperare un'identità utente nel pool di identità Amazon Cognito, chiama l'API GetId.

Esempio di comando get-id:

aws cognito-identity get-id --identity-pool-id "example_identity_pool_id" --logins cognito-idp.example_region.amazonaws.com/example_cognito_user_pool_id=example_cognito_user_id_token

Esempio di output:

{
    "IdentityId": "region:abcdef"
}

2.    Per recuperare le credenziali temporanee dal pool di identità, chiama l'API GetCredentialsForIdentity.

Esempio di comando get-credentials-for-identity:

aws cognito-identity get-credentials-for-identity --identity-id region:abcdef --logins cognito-idp.example_region.amazonaws.com/example_cognito_user_pool_id = example_cognito_user_id_token

Esempio di output:

{
    "IdentityId": "region:abcdef",
    "Credentials": {
        "AccessKeyId": "xxxxxxxxxx",
        "SecretKey": "xxxxxxxxxx",
        "SessionToken": "xxxxxxxxxx",
        "Expiration": ""
    }
}

Per ulteriori informazioni sui controlli di accesso complessi basati sui ruoli e sugli attributi, consulta Fine-grained access control with Amazon Cognito identity pools (Controllo granulare degli accessi con i pool di identità di Amazon Cognito).


Informazioni correlate

Identity pools (federated identities) authentication flow [Flusso di autenticazione dei pool di identità (identità federate)]

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa