Menggunakan Amazon Cognito Identity untuk Autentikasi Pengguna - AWS SDK for JavaScript

Kami mengumumkan yang akan datang end-of-support untuk AWS SDK for JavaScript v2. Kami menyarankan Anda bermigrasi ke AWS SDK for JavaScript v3. Untuk tanggal, detail tambahan, dan informasi tentang cara bermigrasi, silakan merujuk ke pengumuman tertaut.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan Amazon Cognito Identity untuk Autentikasi Pengguna

Cara yang disarankan untuk mendapatkanAWSkredensia untuk skrip browser Anda adalah dengan menggunakan objek kredensi Identity Amazon Cognito,AWS.CognitoIdentityCredentials. Amazon Cognito memungkinkan otentikasi pengguna melalui penyedia identitas pihak ketiga.

Untuk menggunakan Amazon Cognito Identity, Anda harus terlebih dahulu membuat kumpulan identitas di konsol Amazon Cognito. Kumpulan identitas mewakili kelompok identitas yang diberikan aplikasi Anda kepada pengguna Anda. Identitas yang diberikan kepada pengguna secara unik mengidentifikasi setiap akun pengguna. Identitas Amazon Cognito identitas bukan kredensial. Mereka ditukar dengan kredensia menggunakan dukungan federasi identitas web diAWS Security Token Service(AWS STS).

Amazon Cognito membantu Anda mengelola abstraksi identitas di beberapa penyedia identitas denganAWS.CognitoIdentityCredentialsobjek. Identitas yang dimuat kemudian ditukar dengan kredensia diAWS STS.

Mengkonfigurasi Objek Kredensia Identity Amazon Cognito

Jika Anda belum membuatnya, buat kolam identitas untuk digunakan dengan skrip browser Anda diKonsol Amazon Cognitosebelum Anda mengkonfigurasiAWS.CognitoIdentityCredentials. Buat dan kaitkan peran IAM yang diautentikasi dan tidak diautentikasi untuk kumpulan identitas Anda.

Pengguna yang tidak diautentikasi tidak meminta agar identitas mereka diverifikasi, sehingga peran ini sesuai untuk pengguna tamu aplikasi Anda atau jika pengguna meminta agar identitas mereka diverifikasi dan itu tidak dipermasalahkan. Pengguna yang diautentikasi masuk ke aplikasi Anda melalui penyedia identitas pihak ketiga yang memverifikasi identitas mereka. Pastikan Anda menjangkau izin sumber daya dengan tepat sehingga Anda tidak memberikan akses kepada mereka dari pengguna yang tidak terautentikasi.

Setelah mengkonfigurasi kolam identitas dengan penyedia identitas terlampir, Anda dapat menggunakanAWS.CognitoIdentityCredentialsuntuk mengotentikasi pengguna. Untuk mengkonfigurasi kredensial aplikasi Anda agar dapat menggunakan AWS.CognitoIdentityCredentials, atur properti credentials baik AWS.Config atau konfigurasi per layanan. Contoh berikut menggunakan AWS.Config:

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { // optional tokens, used for authenticated login 'graph.facebook.com': 'FBTOKEN', 'www.amazon.com': 'AMAZONTOKEN', 'accounts.google.com': 'GOOGLETOKEN' } });

Properti opsional Logins adalah peta nama penyedia identitas untuk token identitas bagi penyedia tersebut. Bagaimana Anda bisa mendapatkan token dari penyedia identitas Anda tergantung pada penyedia yang Anda gunakan. Misalnya, jika Facebook adalah salah satu penyedia identitas Anda, Anda dapat menggunakan fungsi FB.login dari SDK Facebook untuk mendapatkan token penyedia identitas:

FB.login(function (response) { if (response.authResponse) { // logged in AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { 'graph.facebook.com': response.authResponse.accessToken } }); s3 = new AWS.S3; // we can now create our service object console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); } });

Mengalihkan Pengguna yang Tidak Diautentikasi ke Pengguna yang

Amazon Cognito mendukung pengguna terautentikasi maupun yang tidak terautentikasi Pengguna yang tidak terautentikasi menerima akses ke sumber daya Anda bahkan jika mereka tidak masuk dengan penyedia identitas mana pun. Tingkat akses ini berguna untuk menampilkan konten kepada pengguna sebelum masuk. Setiap pengguna tidak terautentikasi memiliki identitas unik di Amazon Cognito meskipun mereka belum masuk secara individual dan diautentikasi.

Pengguna Awalnya Tidak Diautentikasi

Pengguna biasanya memulai dengan peran yang tidak terautentikasi, yang dengannya Anda mengatur properti kredensia objek konfigurasi Anda tanpaLoginsproperti. Dalam kasus ini, konfigurasi default Anda mungkin terlihat seperti berikut ini:

// set the default config object var creds = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030' }); AWS.config.credentials = creds;

Beralih ke Pengguna Terautentikasi

Ketika pengguna tidak terautentikasi masuk ke penyedia identitas dan Anda memiliki token, Anda dapat beralih pengguna dari yang tidak terautentikasi menjadi terautentikasi dengan memanggil fungsi kustom yang memperbarui kredensialnya objek dan menambahkan objek kredensialnya dan menambahkanLoginstoken:

// Called when an identity provider has a token for a logged in user function userLoggedIn(providerName, token) { creds.params.Logins = creds.params.Logins || {}; creds.params.Logins[providerName] = token; // Expire credentials to refresh them on the next request creds.expired = true; }

Anda juga dapat membuatCognitoIdentityCredentialsobjek. Jika Anda melakukannya, Anda harus mengatur ulang properti kredensia objek layanan yang sudah ada. Objek layanan dibaca dari konfigurasi global hanya pada inisialisasi objek.

Untuk informasi selengkapnya tentangCognitoIdentityCredentialsobjek, lihatAWS.CognitoIdentityCredentialsdiAWS SDK for JavaScriptReferensi API.