Estoy atrapado en el proceso "Grupos de usuarios de Amazon Cognito Identity".
Intenté todos los códigos posibles para autenticar usuarios en grupos de usuarios cognito. Pero siempre recibo un error que dice "Error: no se puede verificar el hash secreto para el cliente 4b ******* fd".
Aquí está el código:
AWS.config.region = 'us-east-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:b64bb629-ec73-4569-91eb-0d950f854f4f'
});
AWSCognito.config.region = 'us-east-1';
AWSCognito.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'us-east-1:b6b629-er73-9969-91eb-0dfffff445d'
});
AWSCognito.config.update({accessKeyId: 'AKIAJNYLRONAKTKBXGMWA', secretAccessKey: 'PITHVAS5/UBADLU/dHITesd7ilsBCm'})
var poolData = {
UserPoolId : 'us-east-1_l2arPB10',
ClientId : '4bmsrr65ah3oas5d4sd54st11k'
};
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
Username : '[email protected]',
Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.confirmRegistration('123456', true,function(err, result) {
if (err) {
alert(err);
return;
}
console.log('call result: ' + result);
});
amazon-web-services
amazon-cognito
Ronak Patel
fuente
fuente
Respuestas:
Parece que actualmente AWS Cognito no maneja el secreto del cliente a la perfección. Funcionará en el futuro cercano, pero por ahora sigue siendo una versión beta.
Para mí está funcionando bien para una aplicación sin un secreto de cliente, pero falla para una aplicación con un secreto de cliente.
Entonces, en su grupo de usuarios, intente crear una nueva aplicación sin generar un secreto de cliente. Luego use esa aplicación para registrar un nuevo usuario o para confirmar el registro.
fuente
"When creating the App, the generate client secret box must be unchecked because the JavaScript SDK doesn't support apps that have a client secret."
De acuerdo con los documentos: http://docs.aws.amazon.com/cognito/latest/developerguide/setting-up-the-javascript-sdk.html
El SDK de Javascript no admite aplicaciones con un secreto de cliente.
Las instrucciones ahora indican que debe desmarcar "Generar secreto de cliente" al crear la aplicación para el grupo de usuarios.
fuente
Esto podría demorar algunos años, pero simplemente desmarque la opción "Generar secreto de cliente" y funcionará para sus clientes web.
fuente
Como todos los demás han publicado su idioma, aquí está el nodo (y funciona en el navegador con
browserify-crypto
, usado automáticamente si usa webpack o browserify):fuente
Tuve el mismo problema en el SDK de .net.
Así es como lo resolví, en caso de que alguien más lo necesite:
Registrarse se ve así:
fuente
Para cualquiera que esté interesado en usar AWS Lambda para inscribir a un usuario con AWS JS SDK, estos son los pasos que hice:
Cree otra función lambda en python para generar la clave:
Llame a la función a través de la función nodeJS en AWS. La firma actuó como el hash secreto para Cognito
Nota: La respuesta se basa en gran medida en la respuesta de George Campbell en el siguiente enlace: Cálculo de un hash SHA con una cadena + clave secreta en python
fuente
Solución para
golang
. Parece que esto debería agregarse al SDK.fuente
Solución para NodeJS con SecretHash
Parece tonto que AWS haya eliminado la clave secreta del SDK, ya que no estará expuesta en NodeJS.
Lo hice funcionar en NodeJS interceptando fetch y agregando la clave hash usando la respuesta de @Simon Buchan .
cognito.js
fetch-inceptor.js ( Bifurcado y editado para NodeJS de Fork de https://github.com/werk85/fetch-intercept/blob/develop/src/index.js )
fuente
En Java podrías usar este código:
fuente
Amazon menciona cómo Computing SecretHash Values para Amazon Cognito en su documentación con el código de la aplicación Java. Aquí este código funciona con boto 3 Python SDK .
Puede encontrar su
App clients
en el menú del lado izquierdo debajoGeneral settings
. Consigue esosApp client id
yApp client secret
para crearSECRET_HASH
. Para su mejor comprensión, comenté todos los resultados de cada línea.En la documentación de boto 3 , podemos ver mucho tiempo para preguntar
SECRET_HASH
. Entonces, las líneas de código anteriores lo ayudan a crear estoSECRET_HASH
.Si no desea usar,
SECRET_HASH
simplemente desmarqueGenerate client secret
al crear una aplicación.fuente
app_client_id
yusername
. Pero muestro la salida correcta como un comentario que se muestra de acuerdo con elusername
+app_client_id
. Una y otra vez muchas gracias.este es un código php de muestra que uso para generar el hash secreto
en este caso el resultado es:
fuente
para JAVA y .NET necesita pasar el secreto que tiene en los parámetros de autenticación con el nombre
SECRET_HASH
.Y debería funcionar.
fuente
C ++ con el marco Qt
fuente
Puede haber una versión más compacta, pero esto funciona para Ruby, específicamente en Ruby on Rails sin tener que requerir nada:
fuente
Autenticación Cognito
Error: el cliente de la aplicación no está configurado para secreto pero se recibió hash secreto
Proporcionar secretKey como nil funcionó para mí. Las credenciales proporcionadas incluyen: -
AWSCognitoUserPoolsSignInProviderKey (AccessKeyId)
Todas las cosas anteriores funcionan con el ejemplo de código vinculado a continuación.
Código de muestra de AWS: https://github.com/awslabs/aws-sdk-ios-samples/tree/master/CognitoYourUserPools-Sample/Swift
Avísame si eso no te funciona.
fuente
Aquí está mi 1 comando, y funciona (Confirmado :))
fuente