Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan PKCE hibah kode otorisasi
Amazon Cognito mendukung otentikasi Kunci Bukti untuk Pertukaran Kode (PKCE) dalam hibah kode otorisasi. PKCEadalah perpanjangan dari OAuth 2.0 hibah kode otorisasi untuk klien publik. PKCEmenjaga terhadap penebusan kode otorisasi yang dicegat.
Bagaimana Amazon Cognito menggunakan PKCE
Untuk memulai otentikasiPKCE, aplikasi Anda harus menghasilkan nilai string yang unik. String ini adalah pemverifikasi kode, nilai rahasia yang digunakan Amazon Cognito untuk membandingkan klien yang meminta hibah otorisasi awal kepada klien yang menukar kode otorisasi dengan token.
Aplikasi Anda harus menerapkan SHA256 hash ke string pemverifikasi kode dan menyandikan hasilnya ke base64. Berikan string hash ke code_challenge
parameter Otorisasi titik akhir as a di badan permintaan. Saat aplikasi Anda menukar kode otorisasi dengan token, kode tersebut harus menyertakan string pemverifikasi kode dalam teks biasa sebagai code_verifier
parameter di badan permintaan ke file. Titik akhir token Amazon Cognito melakukan hash-and-encode operasi yang sama pada pemverifikasi kode. Amazon Cognito hanya mengembalikan ID, akses, dan token penyegaran jika menentukan bahwa pemverifikasi kode menghasilkan tantangan kode yang sama dengan yang diterimanya dalam permintaan otorisasi.
Untuk menerapkan Aliran Hibah Otorisasi dengan PKCE
-
Buka Amazon Cognito konsol
. Jika diminta, masukkan AWS kredensional Anda. -
Pilih Kolam Pengguna.
-
Pilih kolam pengguna yang ada dari daftar, atau buat kolam pengguna. Jika Anda membuat kumpulan pengguna, Anda akan diminta untuk menyiapkan klien aplikasi dan mengonfigurasi UI yang dihosting selama wizard.
-
Jika Anda membuat kumpulan pengguna baru, siapkan klien aplikasi dan konfigurasikan UI yang dihosting selama penyiapan terpandu.
-
Jika Anda mengonfigurasi kumpulan pengguna yang ada, tambahkan domain dan klien aplikasi publik, jika Anda belum melakukannya.
-
-
Hasilkan string alfanumerik acak, biasanya identifier unik universal (UUID), untuk membuat tantangan kode untuk. PKCE String ini adalah nilai
code_verifier
parameter yang akan Anda kirimkan dalam permintaan Anda keTitik akhir token. -
Hash
code_verifier
string dengan SHA256 algoritma. Encode hasil operasi hashing ke base64. String ini adalah nilaicode_challenge
parameter yang akan Anda kirimkan dalam permintaan Anda keOtorisasi titik akhir.Berikut ini Python contoh menghasilkan
code_verifier
dan menghitung:code_challenge
#!/usr/bin/env python3 import random from base64 import urlsafe_b64encode from hashlib import sha256 from string import ascii_letters from string import digits # use a cryptographically strong random number generator source rand = random.SystemRandom() code_verifier = ''.join(rand.choices(ascii_letters + digits, k=128)) code_verifier_hash = sha256(code_verifier.encode()).digest() code_challenge = urlsafe_b64encode(code_verifier_hash).decode().rstrip('=') print(f"code challenge: {code_challenge}") print(f"code verifier: {code_verifier}")
Berikut ini adalah contoh output dari Python naskah:
code challenge: Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg code verifier: 9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
-
Selesaikan login UI yang dihosting dengan permintaan hibah kode otorisasi dengan. PKCE Berikut ini adalah contohURL:
https://
mydomain.us-east-1.amazoncognito.com
/oauth2/authorize?response_type=code&client_id=1example23456789
&redirect_uri=https://www.example.com
&code_challenge=Eh0mg-OZv7BAyo-tdv_vYamx1boOYDulDklyXoMDtLg
&code_challenge_method=S256 -
Kumpulkan otorisasi
code
dan tukarkan dengan token dengan titik akhir token. Berikut ini adalah contoh permintaan:POST /oauth2/token HTTP/1.1 Host:
mydomain.us-east-1.amazoncognito.com
Content-Type: application/x-www-form-urlencoded Content-Length: 296 redirect_uri=https%3A%2F%2Fwww.example.com
& client_id=1example23456789
& code=7378f445-c87f-400c-855e-0297d072ff03
& grant_type=authorization_code& code_verifier=9D-aW_iygXrgQcWJd0y0tNVMPSXSChIc2xceDhvYVdGLCBk-JWFTmBNjvKSdOrjTTYazOFbUmrFERrjWx6oKtK2b6z_x4_gHBDlr4K1mRFGyE8yA-05-_v7Dxf3EIYJH
-
Tinjau tanggapannya. Ini akan berisi ID, akses, dan token penyegaran. Untuk informasi selengkapnya tentang penggunaan token kumpulan pengguna Amazon Cognito, lihat. Memahami token JSON web kumpulan pengguna (JWTs)