User pool, identity pool, dan JWT

Menggunakan Keamanan AWS untuk Developer

Rahul Singh

Technical Product Manager

Cognito adalah dua layanan dalam satu nama

Amazon Cognito

  • Identitas terkelola untuk pengguna aplikasi Anda
  • Satu nama, dua layanan terpisah

Dua pertanyaan berada di atas batas putus-putus berlabel Amazon Cognito. Di dalamnya ada dua panel biru berdampingan: user pool sebagai direktori pengguna Anda dan identity pool sebagai perantara kredensial. Garis dari kedua panel bertemu pada kotak oranye putus-putus di bawah, menyatakan banyak aplikasi memakai keduanya.

Menggunakan Keamanan AWS untuk Developer

Cognito adalah dua layanan dalam satu nama

Amazon Cognito

  • Identitas terkelola untuk pengguna aplikasi Anda
  • Satu nama, dua layanan terpisah

Mana yang Anda butuhkan?

  • Masuk dan profil pengguna: user pool
  • Browser atau seluler memanggil AWS langsung: identity pool

Dua pertanyaan berada di atas batas putus-putus berlabel Amazon Cognito. Di dalamnya ada dua panel biru berdampingan: user pool sebagai direktori pengguna Anda dan identity pool sebagai perantara kredensial. Garis dari kedua panel bertemu pada kotak oranye putus-putus di bawah, menyatakan banyak aplikasi memakai keduanya.

Menggunakan Keamanan AWS untuk Developer

User pool memproses masuk pengguna

Direktori pengguna terkelola

  • Daftar dan masuk
  • Setel ulang sandi
  • Otentikasi multi-faktor

Alur vertikal: pengguna aplikasi masuk ke user pool yang menyimpan sandi, dan pool mengembalikan kotak berisi ID token, access token, dan refresh token

Menggunakan Keamanan AWS untuk Developer

User pool memproses masuk pengguna

Direktori pengguna terkelola

  • Daftar dan masuk
  • Setel ulang sandi
  • Otentikasi multi-faktor

 

Jika berhasil, tiga token

Alur vertikal: pengguna aplikasi masuk ke user pool yang menyimpan sandi, dan pool mengembalikan kotak berisi ID token, access token, dan refresh token

Menggunakan Keamanan AWS untuk Developer

User pool memproses masuk pengguna

Direktori pengguna terkelola

  • Daftar dan masuk
  • Setel ulang sandi
  • Otentikasi multi-faktor

 

Jika berhasil, tiga token

  • ID token: siapa penggunanya
  • Access token: apa yang boleh dipanggil
  • Refresh token: ambil yang baru nanti

Alur vertikal: pengguna aplikasi masuk ke user pool yang menyimpan sandi, dan pool mengembalikan kotak berisi ID token, access token, dan refresh token

Menggunakan Keamanan AWS untuk Developer

Identity pool menerbitkan kredensial AWS

Token bukan kredensial

  • Bukti identitas untuk aplikasi Anda
  • Bukan kredensial untuk mengakses layanan AWS

 

Identity pool: token tepercaya masuk, kredensial keluar

Alur vertikal dengan geometri yang sama seperti diagram user pool: token tepercaya diberikan ke identity pool, yang memeriksa penerbitnya dan mengembalikan kredensial AWS dengan cakupan satu peran yang kedaluwarsa

Menggunakan Keamanan AWS untuk Developer

Identity pool menerbitkan kredensial AWS

Token bukan kredensial

  • Bukti identitas untuk aplikasi Anda
  • Bukan kredensial untuk mengakses layanan AWS

 

Identity pool: token tepercaya masuk, kredensial keluar

  • Pekerjaan build menukar token OIDC
  • Bukti yang Anda pegang, ditukar dengan kartu akses

Alur vertikal dengan geometri yang sama seperti diagram user pool: token tepercaya diberikan ke identity pool, yang memeriksa penerbitnya dan mengembalikan kredensial AWS dengan cakupan satu peran yang kedaluwarsa

Menggunakan Keamanan AWS untuk Developer

Satu aplikasi, dua bagian

Browser memakai keduanya

  1. Masuk, terima token
  2. Kirim token itu ke API Anda

Bearer token: siapa pun yang memegangnya, memakainya

Alur vertikal. Browser masuk di user pool, yang mengembalikan token. Satu token itu bercabang dua: kiri ke API Anda dan kanan ke identity pool. Identity pool mengembalikan kredensial, dan kredensial itulah yang mencapai S3.

Menggunakan Keamanan AWS untuk Developer

Satu aplikasi, dua bagian

Browser memakai keduanya

  1. Masuk, terima token
  2. Kirim token itu ke API Anda
  3. Tukar token yang sama untuk kredensial

Alur vertikal. Browser masuk di user pool, yang mengembalikan token. Satu token itu bercabang dua: kiri ke API Anda dan kanan ke identity pool. Identity pool mengembalikan kredensial, dan kredensial itulah yang mencapai S3.

Menggunakan Keamanan AWS untuk Developer

Satu aplikasi, dua bagian

Browser memakai keduanya

  1. Masuk, terima token
  2. Kirim token itu ke API Anda
  3. Tukar token yang sama untuk kredensial
  4. Akses S3 dengan kredensial itu

Token ke kode Anda, kredensial ke AWS

Alur vertikal. Browser masuk di user pool, yang mengembalikan token. Satu token itu bercabang dua: kiri ke API Anda dan kanan ke identity pool. Identity pool mengembalikan kredensial, dan kredensial itulah yang mencapai S3.

Menggunakan Keamanan AWS untuk Developer

Token adalah teks dengan tanda tangan

Tiga segmen disambung titik dan berlabel Header, Payload, dan Signature. Gembok terbuka berada di payload, dan kurung di bawah dua segmen pertama menunjukkan jangkauan tanda tangan.

JWT: JSON Web Token

  • Klaim: pernyataan berlabel tentang pengguna
Menggunakan Keamanan AWS untuk Developer

Token adalah teks dengan tanda tangan

Tiga segmen disambung titik dan berlabel Header, Payload, dan Signature. Gembok terbuka berada di payload, dan kurung di bawah dua segmen pertama menunjukkan jangkauan tanda tangan.

JWT: JSON Web Token

  • Klaim: pernyataan berlabel tentang pengguna
  • Terenkode, bukan terenkripsi
  • Siapa pun bisa membacanya dan siapa pun bisa mengubahnya
Menggunakan Keamanan AWS untuk Developer

Verifikasi sebelum membaca

Verifikasi didahulukan

  • JWKS: JSON Web Key Set, kunci penandatangan publik dari penerbit
  • Tanda tangan diperiksa dengan kunci tersebut

Diagram gerbang vertikal. Token datang dan melewati empat pemeriksaan bercentang berurutan: tanda tangan, penerbit, audiens, dan kedaluwarsa. Kunci publik penerbit masuk ke pemeriksaan tanda tangan dari samping, dan hanya setelah lulus keempatnya jalur mencapai kotak hijau untuk membaca klaim.

Menggunakan Keamanan AWS untuk Developer

Verifikasi sebelum membaca

Verifikasi didahulukan

  • JWKS: JSON Web Key Set, kunci penandatangan publik dari penerbit
  • Tanda tangan diperiksa dengan kunci tersebut

 

Lalu tiga klaim

  • iss: user pool Anda
  • aud pada ID token, client_id pada access token
  • exp: masih berlaku

Diagram gerbang vertikal. Token datang dan melewati empat pemeriksaan bercentang berurutan: tanda tangan, penerbit, audiens, dan kedaluwarsa. Kunci publik penerbit masuk ke pemeriksaan tanda tangan dari samping, dan hanya setelah lulus keempatnya jalur mencapai kotak hijau untuk membaca klaim.

Menggunakan Keamanan AWS untuk Developer

Token terverifikasi tetap bisa salah

Dua kartu serasi berdampingan. Kartu ID token bertanda sebagai identity token, menampilkan client ID pada klaim audience, dan mencatat tidak membawa scope, di atas kotak abu-abu untuk siapa pengguna itu. Kartu access token bertanda sebagai access token, menampilkan client ID pada klaim pengenal kliennya, dan mencatat membawa scope, di atas kotak oranye untuk apa yang boleh dipanggil. Pita putus-putus di bawah keduanya menyatakan klaim grup Cognito muncul di kedua token.

Terverifikasi, namun tetap token yang salah

Menggunakan Keamanan AWS untuk Developer

Token terverifikasi tetap bisa salah

Dua kartu serasi berdampingan. Kartu ID token bertanda sebagai identity token, menampilkan client ID pada klaim audience, dan mencatat tidak membawa scope, di atas kotak abu-abu untuk siapa pengguna itu. Kartu access token bertanda sebagai access token, menampilkan client ID pada klaim pengenal kliennya, dan mencatat membawa scope, di atas kotak oranye untuk apa yang boleh dipanggil. Pita putus-putus di bawah keduanya menyatakan klaim grup Cognito muncul di kedua token.

Terverifikasi, namun tetap token yang salah

token_use menunjukkan jenisnya

  • cognito:groups ada pada keduanya, dan bukan scope

  • scope: apa yang boleh dipanggil token

  • sub: pengguna mana, dan tidak pernah berubah
  • Identitas bukan izin
Menggunakan Keamanan AWS untuk Developer

Ayo berlatih!

Menggunakan Keamanan AWS untuk Developer

Preparing Video For Download...