Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

358
Vistas
¿Cómo cambiar los roles de IAM para usuarios de AWS Cognito que pertenecen a varios grupos de grupos de usuarios?

Tengo una aplicación web creada con AWS Amplify y Cognito que se usa para la autenticación/autorización. Los grupos de usuarios de Cognito son el proveedor de identidad.

Los usuarios se agrupan en grupos de grupos de usuarios de Cognito en función de los permisos que deberían tener.

Quiero que algunos usuarios formen parte de varios grupos (por ejemplo, usuarios administradores) que deberían tener la suma de los permisos de estos grupos. Pero dado que el usuario solo puede asumir un rol, necesito poder cambiar los roles en la aplicación.

Intenté lograr esto usando getCredentialsForIdentity :

 const cognito_identity = new AWS.CognitoIdentity({ apiVersion: '2014-06-30', region: 'eu-central-1' }); var params = { IdentityId: 'some_identity', CustomRoleArn: 'arn:aws:iam::<account_id>:role/editors', }; cognito_identity.getCredentialsForIdentity(params, function(err, data) { if (err) console.log(err, err.stack); else console.log(data); });

Al invocar el código anterior, falla con NotAuthorizedException: el acceso a la identidad '`some_identity' está prohibido.

¿Qué debo hacer para que funcione?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Después de incluir la propiedad Logins en los parámetros de getCredentialsForIdentity , funcionó:

 async function switchRoles(region, identityId, roleArn, cognitoArn) { const user = await Auth.currentUserPoolUser(); const cognitoidentity = new AWS.CognitoIdentity({ apiVersion: '2014-06-30', region }); const params = { IdentityId: identityId, CustomRoleArn: roleArn, Logins: { [cognitoArn]: user .getSignInUserSession() .getIdToken() .getJwtToken(), }, }; return cognitoidentity .getCredentialsForIdentity(params) .promise() .then(data => { return { accessKeyId: data.Credentials.AccessKeyId, sessionToken: data.Credentials.SessionToken, secretAccessKey: data.Credentials.SecretKey, expireTime: data.Credentials.Expiration, expired: false, }; }) .catch(err => { console.log(err, err.stack); return null; }); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda