Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

252
Views
AWS Cognito/Amplify: haga que los registros de nuevos usuarios se agreguen automáticamente a un grupo de usuarios

Estoy usando la biblioteca de AWS Amplify para registrarme y realizar la autenticación para un proyecto de AppSync. Esto usa Cognito. Sin embargo, cuando un nuevo usuario se registra a través de Amplify/Cognito, el nuevo usuario no se asigna a ningún grupo específico en el grupo de cognito. Estoy usando el componente de orden superior Amplify para iniciar sesión/registrarse.

 import { withAuthenticator } from 'aws-amplify-react';

que envuelvo sobre un componente

 class Authenticator extends React.Component { //... basically empty component, only exists so I can wrap it w/ the HOC } export default withAuthenticator(Authenticator)

Amplify está configurado en index.js

 import config from './aws-exports'; import Amplify from 'aws-amplify'; Amplify.configure(config);

AWS Mobile Hub CLI generó automáticamente aws-exports.js. Parece...

 const awsmobile = { 'aws_app_analytics': 'enable', 'aws_cognito_identity_pool_id': 'us-west-2:XXX', 'aws_cognito_region': 'us-west-2', 'aws_content_delivery': 'enable', 'aws_content_delivery_bucket': 'flashcards-hosting-mobilehub-XXX', 'aws_content_delivery_bucket_region': 'us-west-2', 'aws_content_delivery_cloudfront': 'enable', 'aws_content_delivery_cloudfront_domain': 'XXX.cloudfront.net', 'aws_mandatory_sign_in': 'enable', 'aws_mobile_analytics_app_id': 'XXX', 'aws_mobile_analytics_app_region': 'us-east-1', 'aws_project_id': 'XXX', 'aws_project_name': 'flash-cards', 'aws_project_region': 'us-west-2', 'aws_resource_name_prefix': 'flashcards-mobilehub-XXX', 'aws_sign_in_enabled': 'enable', 'aws_user_pools': 'enable', 'aws_user_pools_id': 'us-west-2_XXX', 'aws_user_pools_mfa_type': 'OFF', 'aws_user_pools_web_client_id': 'XXX', } export default awsmobile;
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Lo tengo funcionando. Como mencionó Vladamir en los comentarios, esto debe hacerse del lado del servidor, en un disparador lambda posterior a la confirmación. Aquí está la función lambda.

 'use strict'; var AWS = require('aws-sdk'); module.exports.addUserToGroup = (event, context, callback) => { // console.log("howdy!",event); var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider(); var params = { GroupName: 'users', //The name of the group in you cognito user pool that you want to add the user to UserPoolId: event.userPoolId, Username: event.userName }; //some minimal checks to make sure the user was properly confirmed if(! (event.request.userAttributes["cognito:user_status"]==="CONFIRMED" && event.request.userAttributes.email_verified==="true") ) callback("User was not properly confirmed and/or email not verified") cognitoidentityserviceprovider.adminAddUserToGroup(params, function(err, data) { if (err) { callback(err) // an error occurred } callback(null, event); // successful response }); };

También deberá establecer la política para el rol de la función lambda. En la consola de IAM, busque el rol para esta lambda y agregue esta política en línea. Esto le da a la lambda las llaves del castillo para todo cognito, así que haz que el tuyo sea más restrictivo.

 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-identity:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cognito-sync:*" ], "Resource": "*" }, { //this might be the only one you really need "Effect": "Allow", "Action": [ "cognito-idp:*" ], "Resource": "*" } ] }
over 4 years ago · Santiago Trujillo Report

0

Cognito no sabrá a qué grupo debe pertenecer un usuario recién registrado. Tiene que programar (o manualmente) asignar al usuario a un grupo específico. Una vez que su código coloca al usuario en un grupo específico, el token de ID de JWT contendrá una lista de todos los grupos relevantes/roles de IAM de los que forma parte este usuario.

Más información sobre grupos aquí .

over 4 years ago · Santiago Trujillo Report

0

AWS Amplify ha agregado soporte para agregar usuarios a grupos usando amplificar cli. Los detalles se proporcionan aquí https://aws.amazon.com/blogs/mobile/amplify-framework-adds-supports-for-aws-lambda-triggers-in-auth-and-storage-categories/

Además, este artículo explica un poco más de detalles https://medium.com/@dantasfiles/multi-tenant-aws-amplify-method-2-cognito-groups-38b40ace2e9e

Al pasar el nombre del grupo del lado del cliente a su función lamda, puede usar el objeto clientMetadata del parámetro de activación Lambda posterior a la confirmación como se muestra a continuación.

 await Auth.signUp({ username: this.email, password: this.password, attributes: { given_name: this.firstname, family_name: this.lastname }, clientMetadata: { key: value } })

Si está utilizando la interfaz de usuario de autenticación amplificada lista para usar, debe personalizarla con el componente Autenticador y escribir su propio componente para registrarse o ConfirmSignUp preferible (por favor, verifique si puede pasar clientMetadata desde allí)

Dentro de la función lamda, puede obtener un nombre de grupo pasado como este

 event.request.clientMetadata.groupName
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!