Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengautentikasi pengguna aplikasi React yang ada dengan menggunakan Amazon Cognito dan AWS Amplify UI
Daniel Kozhemyako, Amazon Web Services
Ringkasan
Pola ini menunjukkan cara menambahkan kemampuan otentikasi ke aplikasi React frontend yang ada dengan menggunakan pustaka AWS Amplify UI dan kumpulan pengguna Amazon Cognito.
Pola ini menggunakan Amazon Cognito untuk menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk aplikasi. Ini juga menggunakan komponen dari Amplify UI
Setelah Anda menerapkan pola ini, pengguna dapat masuk dengan menggunakan salah satu kredensi berikut:
Nama pengguna dan kata sandi
Penyedia identitas sosial, seperti Apple, Facebook, Google, dan Amazon
Penyedia identitas perusahaan yang kompatibel dengan SAFL 2.0 atau kompatibel dengan OpenID Connect (OIDC)
catatan
Untuk membuat komponen UI otentikasi kustom, Anda dapat menjalankan komponen Authenticator UI dalam mode headless.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS
React 18.2.0 atau aplikasi web yang lebih baru
Batasan
Pola ini hanya berlaku untuk aplikasi web React.
Pola ini menggunakan komponen Amplify UI bawaan. Solusinya tidak mencakup langkah-langkah yang diperlukan untuk mengimplementasikan komponen UI khusus.
Versi produk
Amplify UI 6.1.3 atau yang lebih baru (Gen 1)
Amplify 6.0.16 atau yang lebih baru (Gen 1)
Arsitektur
Arsitektur target
Diagram berikut menunjukkan arsitektur yang menggunakan Amazon Cognito untuk mengautentikasi pengguna untuk aplikasi web React.

Alat
Layanan AWS
Amazon Cognito menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk aplikasi web dan seluler.
Alat-alat lainnya
Amplify UI
adalah pustaka UI open-source yang menyediakan komponen yang dapat disesuaikan yang dapat Anda sambungkan ke cloud. Node.js
adalah lingkungan JavaScript runtime berbasis peristiwa yang dirancang untuk membangun aplikasi jaringan yang dapat diskalakan. npm
adalah registri perangkat lunak yang berjalan di lingkungan Node.js dan digunakan untuk berbagi atau meminjam paket dan mengelola penyebaran paket pribadi.
Praktik terbaik
Jika Anda sedang membangun aplikasi baru, kami sarankan Anda menggunakan Amplify Gen 2.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Membuat pengguna. | Buat kumpulan pengguna Amazon Cognito. Konfigurasikan opsi masuk dan persyaratan keamanan kumpulan pengguna agar sesuai dengan kasus penggunaan Anda. | Pengembang aplikasi |
Tambahkan klien aplikasi. | Konfigurasikan klien aplikasi kumpulan pengguna. Klien ini diperlukan agar aplikasi Anda berinteraksi dengan kumpulan pengguna Amazon Cognito. | Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Instal dependensi. | Untuk menginstal
| Pengembang aplikasi |
Konfigurasikan kumpulan pengguna. | Berdasarkan contoh berikut, buat
| Pengembang aplikasi |
Impor dan konfigurasikan layanan Amplify. |
| Pengembang aplikasi |
Tambahkan komponen Authenticator UI. | Untuk menampilkan komponen
catatanContoh cuplikan kode mengimpor komponen Komponen
Lihat contoh komponen berikut:
catatanUntuk | Pengembang aplikasi |
(Opsional) Ambil informasi sesi. | Setelah pengguna diautentikasi, Anda dapat mengambil data dari klien Amplify tentang sesi mereka. Misalnya, Anda dapat mengambil token web JSON (JWT) dari sesi pengguna sehingga Anda dapat mengautentikasi permintaan dari sesi mereka ke API backend. Lihat contoh header permintaan berikut yang menyertakan JWT:
| Pengembang aplikasi |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Pengguna baru tidak dapat mendaftar untuk aplikasi. | Sebagai berikut, pastikan kumpulan pengguna Amazon Cognito Anda dikonfigurasi untuk memungkinkan pengguna mendaftar sendiri untuk berada di kumpulan pengguna:
|
Komponen autentikasi berhenti bekerja setelah memutakhirkan dari v5 ke v6. |
|
Sumber daya terkait
Buat aplikasi React baru
(dokumentasi React) Apa itu Amazon Cognito? (Dokumentasi Amazon Cognito)
Amplify pustaka UI
(Amplify dokumentasi)
Informasi tambahan
App.jsFile harus berisi kode berikut:
import './App.css'; import { Amplify } from 'aws-amplify'; import awsExports from './aws-exports'; import { fetchAuthSession } from 'aws-amplify/auth'; import { Authenticator } from '@aws-amplify/ui-react'; import '@aws-amplify/ui-react/styles.css'; Amplify.configure({ ...awsExports }); let token = (await fetchAuthSession()).tokens?.idToken?.toString(); function App() { return ( <Authenticator> {({ signOut, user }) => ( <div> <p>Welcome {user.username}</p> <p>Your token is: {token}</p> <button onClick={signOut}>Sign out</button> </div> )} </Authenticator> ); } export default App;