Я застрял в процессе «Пулы пользователей Amazon Cognito Identity».
Я перепробовал все возможные коды для аутентификации пользователя в пользовательских пулах когнито. Но я всегда получаю сообщение об ошибке: «Ошибка: невозможно проверить секретный хэш для клиента 4b ******* fd».
Вот код:
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 : 'ronakpatel@gmail.com',
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
Ронак Патель
источник
источник
Ответы:
Похоже, что в настоящее время AWS Cognito плохо обрабатывает секреты клиента. Он будет работать в ближайшем будущем, но пока это все еще бета-версия.
Для меня он отлично работает для приложения без секрета клиента, но не работает для приложения с секретом клиента.
Итак, в вашем пользовательском пуле попробуйте создать новое приложение без создания секрета клиента. Затем используйте это приложение для регистрации нового пользователя или подтверждения регистрации.
источник
"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."
Согласно Документам: http://docs.aws.amazon.com/cognito/latest/developerguide/setting-up-the-javascript-sdk.html
SDK Javascript не поддерживает приложения с секретным кодом клиента.
Теперь в инструкциях указано, что вам нужно снять флажок «Создать секрет клиента» при создании приложения для пула пользователей.
источник
Это может произойти с опозданием на несколько лет, но просто снимите флажок «Создать секрет клиента», и он будет работать для ваших веб-клиентов.
источник
Поскольку все остальные разместили свой язык, вот узел (и он работает в браузере
browserify-crypto
, автоматически используется, если вы используете webpack или browserify):источник
У меня была такая же проблема в SDK .net.
Вот как я решил, если это кому-то еще понадобится:
Тогда регистрация выглядит так:
источник
Для всех, кто заинтересован в использовании AWS Lambda для регистрации пользователя с помощью AWS JS SDK, вот шаги, которые я сделал:
Создайте еще одну лямбда-функцию в Python для генерации ключа:
Вызовите функцию через функцию nodeJS в AWS. Подпись служила секретным хешем для Cognito.
Примечание. Ответ во многом основан на ответе Джорджа Кэмпбелла по следующей ссылке: Расчет хэша SHA со строкой + секретным ключом в python.
источник
Решение для
golang
. Похоже, это нужно добавить в SDK.источник
Решение для NodeJS с SecretHash
Кажется глупым, что AWS удалила секретный ключ из SDK, поскольку он не будет отображаться в NodeJS.
Я заставил его работать в NodeJS, перехватив выборку и добавив хешированный ключ, используя ответ @Simon Buchan .
cognito.js
fetch-inceptor.js ( разветвленный и отредактированный для NodeJS из Fork https://github.com/werk85/fetch-intercept/blob/develop/src/index.js )
источник
Amazon упоминает, как вычислять значения SecretHash для Amazon Cognito в своей документации с кодом Java-приложения. Здесь этот код работает с Boto 3 Python SDK .
Вы можете найти его
App clients
в меню слева подGeneral settings
. Получите теApp client id
иApp client secret
создайтеSECRET_HASH
. Для вашего лучшего понимания я закомментировал все выходы каждой строки.В документации по бото 3 мы видим, что много времени спрашивают
SECRET_HASH
. Итак, приведенные выше строки кода помогут вам создать этоSECRET_HASH
.Если вы не хотите использовать,
SECRET_HASH
просто снимите флажокGenerate client secret
при создании приложения.источник
app_client_id
иusername
. Но я показываю правильный результат в виде комментария, который отображается в соответствии со знакомusername
+app_client_id
. Снова и снова большое спасибо.В Java вы можете использовать этот код:
источник
это образец кода php, который я использую для генерации секретного хэша
в этом случае результат:
источник
для JAVA и .NET вам необходимо передать секрет в параметрах аутентификации с именем
SECRET_HASH
.И это должно работать.
источник
C ++ с Qt Framework
источник
Может быть более компактная версия, но это работает для Ruby, особенно в Ruby on Rails, без каких-либо требований:
источник
Cognito аутентификация
Ошибка: клиент приложения не настроен для секрета, но секретный хеш был получен
Предоставление secretKey as nil сработало для меня. Предоставляемые учетные данные включают: -
AWSCognitoUserPoolsSignInProviderKey (AccessKeyId)
Все вышеперечисленное работает с приведенным ниже примером кода.
Пример кода AWS: https://github.com/awslabs/aws-sdk-ios-samples/tree/master/CognitoYourUserPools-Sample/Swift
Сообщите мне, если это не сработает для вас.
источник
Вот моя 1 команда, и она работает (подтверждено :))
источник