Saya terjebak dalam proses "kumpulan pengguna Amazon Cognito Identity".
Saya mencoba semua kode yang mungkin untuk mengautentikasi pengguna di cognito userpools. Tetapi saya selalu mendapatkan kesalahan yang mengatakan "Kesalahan: Tidak dapat memverifikasi hash rahasia untuk klien 4b ******* fd".
Ini kodenya:
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
sumber
sumber
Jawaban:
Sepertinya saat ini AWS Cognito tidak menangani rahasia klien dengan sempurna. Ini akan berfungsi dalam waktu dekat tetapi untuk saat ini masih versi beta.
Bagi saya ini berfungsi dengan baik untuk aplikasi tanpa rahasia klien tetapi gagal untuk aplikasi dengan rahasia klien.
Jadi di kumpulan pengguna Anda, cobalah membuat aplikasi baru tanpa membuat rahasia klien. Kemudian gunakan aplikasi itu untuk mendaftarkan pengguna baru atau untuk mengonfirmasi pendaftaran.
sumber
"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."
Menurut Dokumen: http://docs.aws.amazon.com/cognito/latest/developerguide/setting-up-the-javascript-sdk.html
Javascript SDK tidak mendukung Aplikasi dengan Rahasia Klien.
Instruksi sekarang menyatakan bahwa Anda perlu menghapus centang pada "Hasilkan Rahasia Klien" saat membuat aplikasi untuk User Pool.
sumber
Ini mungkin terlambat beberapa tahun tetapi hapus centang pada opsi "Buat rahasia klien" dan ini akan berfungsi untuk klien web Anda.
sumber
Karena semua orang telah memposting bahasa mereka, inilah node (dan berfungsi di browser dengan
browserify-crypto
, secara otomatis digunakan jika Anda menggunakan webpack atau browserify):sumber
Saya memiliki masalah yang sama di .net SDK.
Inilah cara saya menyelesaikannya, jika ada orang lain yang membutuhkannya:
Mendaftar kemudian terlihat seperti ini:
sumber
Bagi siapa pun yang tertarik menggunakan AWS Lambda untuk mendaftarkan pengguna menggunakan AWS JS SDK, berikut adalah langkah-langkah yang saya lakukan:
Buat fungsi lambda lain di python untuk menghasilkan kunci:
Panggil fungsi tersebut melalui fungsi nodeJS di AWS. Tanda tangan tersebut bertindak sebagai hash rahasia untuk Cognito
Catatan: Jawabannya sangat didasarkan pada jawaban George Campbell di tautan berikut: Menghitung hash SHA dengan string + kunci rahasia di python
sumber
Solusi untuk
golang
. Sepertinya ini harus ditambahkan ke SDK.sumber
Solusi untuk NodeJS dengan SecretHash
Tampaknya konyol bahwa AWS menghapus kunci rahasia dari SDK karena tidak akan terekspos di NodeJS.
Saya membuatnya berfungsi di NodeJS dengan mencegat pengambilan dan menambahkan kunci hash menggunakan jawaban @Simon Buchan .
cognito.js
fetch-inceptor.js ( Bercabang dan diedit untuk NodeJS dari Fork dari https://github.com/werk85/fetch-intercept/blob/develop/src/index.js )
sumber
Amazon menyebutkan bagaimana Menghitung Nilai SecretHash untuk Amazon Cognito dalam dokumentasinya dengan kode aplikasi Java. Di sini kode ini bekerja dengan boto 3 Python SDK .
Anda dapat menemukan Anda
App clients
di menu sisi kiri di bawahGeneral settings
. Dapatkan ituApp client id
danApp client secret
buatSECRET_HASH
. Agar Anda lebih mengerti, saya mengomentari semua output dari setiap baris.Dalam dokumentasi boto 3 , kita bisa melihat banyak waktu bertanya
SECRET_HASH
. Jadi baris kode di atas membantu Anda membuat iniSECRET_HASH
.Jika Anda tidak ingin menggunakan,
SECRET_HASH
hapus centangGenerate client secret
saat membuat aplikasi.sumber
app_client_id
danusername
. Tapi saya menampilkan keluaran yang benar sebagai komentar yang ditampilkan sesuai denganusername
+app_client_id
. Sekali lagi terima kasih banyak.Di Java, Anda dapat menggunakan kode ini:
sumber
ini adalah contoh kode php yang saya gunakan untuk menghasilkan hash rahasia
dalam hal ini hasilnya adalah:
sumber
untuk JAVA dan .NET Anda harus meneruskan rahasia yang ada di parameter auth dengan nama
SECRET_HASH
.Dan itu harus berhasil.
sumber
C ++ dengan Qt Framework
sumber
Mungkin ada versi yang lebih ringkas, tetapi ini berfungsi untuk Ruby, khususnya di Ruby on Rails tanpa harus memerlukan apa pun:
sumber
Otentikasi Penyamaran
Kesalahan: Klien aplikasi tidak dikonfigurasi untuk rahasia tetapi hash rahasia telah diterima
Memberikan secretKey sebagai nol berhasil untuk saya. Kredensial yang diberikan meliputi: -
AWSCognitoUserPoolsSignInProviderKey (AccessKeyId)
Semua hal di atas bekerja dengan contoh kode tertaut di bawah ini.
Kode Sampel AWS: https://github.com/awslabs/aws-sdk-ios-samples/tree/master/CognitoYourUserPools-Sample/Swift
Beri tahu saya jika itu tidak berhasil untuk Anda.
sumber
Ini adalah 1 perintah saya, dan berfungsi (Dikonfirmasi :))
sumber