Je suis bloqué dans le processus "Groupes d'utilisateurs Amazon Cognito Identity".
J'ai essayé tous les codes possibles pour authentifier l'utilisateur dans les userpools cognito. Mais j'obtiens toujours une erreur disant "Erreur: Impossible de vérifier le hachage secret pour le client 4b ******* fd".
Voici le code:
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
la source
la source
Réponses:
Il semble qu'actuellement AWS Cognito ne gère pas parfaitement le secret client. Cela fonctionnera dans un proche avenir, mais pour l'instant, il s'agit toujours d'une version bêta.
Pour moi, cela fonctionne bien pour une application sans secret client, mais échoue pour une application avec un secret client.
Donc, dans votre pool d'utilisateurs, essayez de créer une nouvelle application sans générer de secret client. Utilisez ensuite cette application pour inscrire un nouvel utilisateur ou pour confirmer l'inscription.
la source
"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."
Selon la documentation: http://docs.aws.amazon.com/cognito/latest/developerguide/setting-up-the-javascript-sdk.html
Le SDK Javascript ne prend pas en charge les applications avec un secret client.
Les instructions indiquent maintenant que vous devez décocher la case "Générer le secret client" lors de la création de l'application pour le groupe d'utilisateurs.
la source
Cela peut prendre quelques années de retard, mais décochez simplement l'option "Générer le secret client" et cela fonctionnera pour vos clients Web.
la source
Puisque tout le monde a publié sa langue, voici le nœud (et cela fonctionne dans le navigateur avec
browserify-crypto
, utilisé automatiquement si vous utilisez webpack ou browserify):la source
J'ai eu le même problème dans le SDK .net.
Voici comment j'ai résolu, au cas où quelqu'un d'autre en aurait besoin:
L'inscription ressemble alors à ceci:
la source
Pour toute personne intéressée à utiliser AWS Lambda pour inscrire un utilisateur à l'aide du kit AWS JS SDK, voici les étapes que j'ai suivies:
Créez une autre fonction lambda en python pour générer la clé:
Appelez la fonction via la fonction nodeJS dans AWS. La signature a servi de hachage secret pour Cognito
Remarque: La réponse est largement basée sur la réponse de George Campbell dans le lien suivant: Calcul d'un hachage SHA avec une chaîne + clé secrète en python
la source
Solution pour
golang
. Il semble que cela devrait être ajouté au SDK.la source
Solution pour NodeJS avec SecretHash
Il semble idiot qu'AWS ait supprimé la clé secrète du SDK car elle ne sera pas exposée dans NodeJS.
Je l'ai fait fonctionner dans NodeJS en interceptant fetch et en ajoutant la clé hachée en utilisant la réponse de @Simon Buchan .
cognito.js
fetch-inceptor.js (Forked et édité pour NodeJS depuis Fork de https://github.com/werk85/fetch-intercept/blob/develop/src/index.js )
la source
Amazon mentionne comment calculer les valeurs SecretHash pour Amazon Cognito dans sa documentation avec le code d'application Java. Ici, ce code fonctionne avec le SDK Python boto 3 .
Vous pouvez trouver votre
App clients
menu latéral gauche sousGeneral settings
. Obtenez-lesApp client id
etApp client secret
créezSECRET_HASH
. Pour votre meilleure compréhension, j'ai commenté toutes les sorties de chaque ligne.Dans la documentation de boto 3 , nous pouvons voir beaucoup de temps poser des questions
SECRET_HASH
. Donc, les lignes de code ci-dessus vous aident à créer celaSECRET_HASH
.Si vous ne souhaitez pas utiliser,
SECRET_HASH
décochez simplementGenerate client secret
lors de la création d'une application.la source
app_client_id
etusername
. Mais j'affiche la sortie correcte sous forme de commentaire qui s'affiche en fonction duusername
+app_client_id
. Encore et encore merci beaucoup.En Java, vous pouvez utiliser ce code:
la source
ceci est un exemple de code php que j'utilise pour générer le hachage secret
dans ce cas, le résultat est:
la source
pour JAVA et .NET, vous devez transmettre le secret a dans les paramètres d'authentification avec le nom
SECRET_HASH
.Et ça devrait marcher.
la source
C ++ avec le Framework Qt
la source
Il existe peut-être une version plus compacte, mais cela fonctionne pour Ruby, en particulier dans Ruby on Rails sans avoir besoin de quoi que ce soit:
la source
Authentification Cognito
Erreur: le client d'application n'est pas configuré pour le secret mais un hachage secret a été reçu
Fournir secretKey comme nul a fonctionné pour moi. Les informations d'identification fournies comprennent: -
AWSCognitoUserPoolsSignInProviderKey (AccessKeyId)
Toutes les choses ci-dessus fonctionnent avec l'exemple de code lié ci-dessous.
Exemple de code AWS: https://github.com/awslabs/aws-sdk-ios-samples/tree/master/CognitoYourUserPools-Sample/Swift
Faites-moi savoir si cela ne fonctionne pas pour vous.
la source
Voici ma 1 commande, et cela fonctionne (confirmé :))
la source