¿Cómo utilizo los grupos de identidades de Amazon Cognito para conceder a los usuarios acceso a los servicios de AWS?

4 minutos de lectura
0

Quiero usar los grupos de usuarios de Amazon Cognito para dar a los usuarios acceso a los recursos de AWS.

Resolución

Puede integrar los grupos de identidades de Amazon Cognito con los grupos de usuarios de Amazon Cognito para emitir credenciales temporales para acceder a los recursos de AWS. Configure un proveedor de autenticación mediante la configuración de un grupo de identidades con un grupo de usuarios. Tras autenticar un usuario a través del grupo de usuarios, utilice el token de identidad de usuario con un flujo de autenticación para recuperar las credenciales temporales del grupo de identidades. Hay un flujo de autenticación básico y un flujo de autenticación mejorado para recuperar las credenciales temporales.

Importante: En los siguientes ejemplos de comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), sustituya todas las instancias de las cadenas de ejemplo por sus valores. (Por ejemplo, sustituya “example_identity_pool_id” por el ID de su grupo de identidades o “abcdef” por el ID de identidad de su región de AWS).

Flujo básico

Nota: Si se producen errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de que utiliza la versión más reciente de AWS CLI.

Siga estos pasos para recuperar las credenciales temporales de AWS mediante el flujo de autenticación básico:

1.    En la antigua consola de Amazon Cognito, seleccione Manage Identity Pools (Administrar grupos de identidades). Seleccione el nombre del grupo de identidades de Amazon Cognito que va a actualizar y, a continuación, elija Edit identity pool (Editar grupo de identidades). En Authentication flow settings (Configuración del flujo de autenticación), seleccione Allow Basic (Classic) Flow (Permitir flujo básico [clásico]) y, a continuación, guarde los cambios.

2.    Para generar o recuperar una identidad de usuario en el grupo de identidades, llame a la API GetId.

Ejemplo del 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

Ejemplo de salida:

{
    "IdentityId": "region:abcdef"
}

3.    Para recuperar el token de ID abierto, utilice el resultado del paso 2 para llamar a la API GetOpenIdToken.

Ejemplo del 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

Ejemplo de salida:

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

4.    Para recuperar las credenciales temporales del rol autenticado, utilice el token del paso 3 para llamar a la API AssumeRoleWithWebIdentity.

Ejemplo del 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"

Ejemplo de salida:

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

Flujo mejorado

Siga estos pasos para recuperar las credenciales temporales de AWS mediante el flujo de autenticación mejorado:

1.    Para generar o recuperar una identidad de usuario en el grupo de identidades de Amazon Cognito, llame a la API GetId.

Ejemplo del 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

Ejemplo de salida:

{
    "IdentityId": "region:abcdef"
}

2.    Para recuperar las credenciales temporales del conjunto de identidades, llame a la API GetCredentialsForIdentity.

Ejemplo del 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

Ejemplo de salida:

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

Para obtener más información sobre los complejos controles de acceso basados en roles y los controles de acceso basados en atributos, consulte Fine-grained access control with Amazon Cognito identity pools (Control de acceso detallado con grupos de identidades de Amazon Cognito).


Información relacionada

Identity pools (federated identities) authentication flow (Flujo de autenticación de grupos de identidades [identidades federadas])

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año