Pilih alur autentikasi Amazon Cognito untuk aplikasi perusahaan - AWS Prescriptive Guidance

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

Pilih alur autentikasi Amazon Cognito untuk aplikasi perusahaan

Michael Daehnert dan Fabian Jahnke, Amazon Web Services

Ringkasan

Amazon Cognito menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk aplikasi web dan seluler. Ini menawarkan fitur bermanfaat untuk otentikasi identitas federasi. Untuk memulai dan menjalankannya, arsitek teknis perlu memutuskan bagaimana mereka ingin menggunakan fitur-fitur tersebut.

Amazon Cognito mendukung beberapa aliran untuk permintaan otentikasi. Alur ini menentukan bagaimana pengguna Anda dapat memverifikasi identitas mereka. Keputusan tentang alur otentikasi mana yang akan digunakan bergantung pada persyaratan spesifik aplikasi Anda dan dapat menjadi rumit. Pola ini membantu Anda memutuskan alur otentikasi mana yang paling cocok untuk aplikasi perusahaan Anda. Ini mengasumsikan bahwa Anda sudah memiliki pengetahuan dasar tentang Amazon Cognito, OpenID Connect (OIDC), dan federasi, dan ini memandu Anda melalui detail tentang aliran otentikasi federasi yang berbeda.

Solusi ini ditujukan untuk pengambil keputusan teknis. Ini membantu Anda memahami alur otentikasi yang berbeda dan memetakannya ke persyaratan aplikasi Anda. Prospek teknis harus mengumpulkan wawasan yang diperlukan untuk memulai integrasi Amazon Cognito. Karena organisasi perusahaan terutama berfokus pada federasi SAMP, pola ini mencakup deskripsi untuk kumpulan pengguna Amazon Cognito dengan federasi SAMP.

Prasyarat dan batasan

Prasyarat

  • Akun AWS yang aktif

  • Peran dan izin AWS Identity and Access Management (IAM) dengan akses penuh ke Amazon Cognito

  • (Opsional) Akses ke penyedia identitas Anda (IDP), seperti Microsoft Entra ID, Active Directory Federation Service (AD FS), atau Okta

  • Keahlian tingkat tinggi untuk aplikasi Anda

  • Pengetahuan dasar tentang Amazon Cognito, OpenID Connect (OIDC), dan federasi

Batasan

  • Pola ini berfokus pada kumpulan pengguna Amazon Cognito dan penyedia identitas. Untuk informasi tentang kumpulan identitas Amazon Cognito, lihat bagian Informasi tambahan.

Arsitektur

Gunakan tabel berikut untuk membantu Anda memilih alur otentikasi. Informasi lebih lanjut tentang setiap aliran disediakan di bagian ini.

Apakah Anda memerlukan machine-to-machine otentikasi?

Apakah aplikasi Anda aplikasi berbasis web tempat frontend dirender di server?

Apakah aplikasi Anda aplikasi satu halaman (SPA) atau aplikasi frontend berbasis seluler?

Apakah aplikasi Anda memerlukan token penyegaran untuk fitur “tetap masuk”?

Apakah frontend menawarkan mekanisme pengalihan berbasis browser?

Aliran Amazon Cognito yang direkomendasikan

Ya

Tidak

Tidak

Tidak

Tidak

Alur Kredensial Klien

Tidak

Ya

Tidak

Ya

Ya

Alur Kode Otorisasi

Tidak

Tidak

Ya

Ya

Ya

Alur Kode Otorisasi dengan Kunci Bukti untuk Pertukaran Kode (PKCE)

Tidak

Tidak

Tidak

Tidak

Tidak

Alur Kata Sandi Pemilik Sumber Daya*

* Alur Kata Sandi Pemilik Sumber Daya harus digunakan hanya jika benar-benar diperlukan. Untuk informasi selengkapnya, lihat bagian alur Kata Sandi Pemilik Sumber Daya dalam pola ini.

Alur Kredensial Klien

Aliran Kredensial Klien adalah yang terpendek dari aliran Amazon Cognito. Ini harus digunakan jika sistem atau layanan berkomunikasi satu sama lain tanpa interaksi pengguna. Sistem permintaan menggunakan ID klien dan rahasia klien untuk mengambil token akses. Karena kedua sistem bekerja tanpa interaksi pengguna, tidak diperlukan langkah persetujuan tambahan.

Alur Kredensi Klien untuk Amazon Cognito

Diagram ini menggambarkan hal sebagai berikut:

  1. Aplikasi 1 mengirimkan permintaan otentikasi dengan ID klien dan rahasia klien ke titik akhir Amazon Cognito, dan mengambil token akses.

  2. Aplikasi 1 menggunakan token akses ini untuk setiap panggilan berikutnya ke Aplikasi 2.

  3. Aplikasi 2 memvalidasi token akses dengan Amazon Cognito.

Aliran ini harus digunakan:

  • Untuk komunikasi antar aplikasi tanpa interaksi pengguna

Aliran ini tidak boleh digunakan:

  • Untuk komunikasi apa pun di mana interaksi pengguna dimungkinkan

Alur Kode Otorisasi

Alur Kode Otorisasi adalah untuk otentikasi berbasis web klasik. Dalam alur ini, backend menangani semua pertukaran dan penyimpanan token. Klien berbasis browser tidak melihat token yang sebenarnya. Solusi ini digunakan untuk aplikasi yang ditulis dalam kerangka kerja seperti .NET Core, Jakarta Faces, atau Jakarta Server Pages (JSP).

Alur Kode Otorisasi adalah aliran berbasis pengalihan. Klien harus dapat berinteraksi dengan browser web atau klien serupa. Klien dialihkan ke server otentikasi dan mengautentikasi terhadap server ini. Jika klien berhasil mengautentikasi, itu dialihkan kembali ke server.

Alur Kode Otorisasi untuk Amazon Cognito

Diagram ini menggambarkan hal sebagai berikut:

  1. Klien mengirimkan permintaan ke server web.

  2. Server web mengarahkan klien ke Amazon Cognito dengan menggunakan kode status HTTP 302. Klien secara otomatis mengikuti pengalihan ini ke login iDP yang dikonfigurasi.

  3. IdP memeriksa sesi browser yang ada di sisi iDP. Jika tidak ada, pengguna menerima prompt untuk mengautentikasi dengan memberikan nama pengguna dan kata sandi mereka. IDP merespons dengan token SAMP ke Amazon Cognito.

  4. Amazon Cognito mengembalikan kesuksesan dengan token web JSON (JWT), khususnya token kode. Server web memanggil /oauth2/token untuk menukar token kode dengan token akses. Server web mengirimkan ID klien dan rahasia klien ke Amazon Cognito untuk validasi.

  5. Token akses digunakan untuk setiap panggilan berikutnya ke aplikasi lain.

  6. Aplikasi lain memvalidasi token akses dengan Amazon Cognito.

Aliran ini harus digunakan:

  • Jika pengguna dapat berinteraksi dengan browser web atau klien. Kode aplikasi dijalankan dan dirender di server untuk memastikan bahwa tidak ada rahasia yang terpapar ke browser.

Aliran ini tidak boleh digunakan:

  • Untuk aplikasi satu halaman (SPAs) atau aplikasi seluler karena mereka dirender pada klien dan tidak boleh menggunakan rahasia klien.

Alur Kode Otorisasi dengan PKCE

Aliran Kode Otorisasi dengan Kunci Bukti untuk Pertukaran Kode (PKCE) harus digunakan untuk aplikasi satu halaman dan aplikasi seluler. Ini adalah penerus aliran Implisit dan lebih aman karena menggunakan PKCE. PKCE adalah perpanjangan dari hibah kode otorisasi OAuth 2.0 untuk klien publik. PKCE menjaga terhadap penebusan kode otorisasi yang dicegat.

Alur Kode Otorisasi dengan PKCE untuk Amazon Cognito

Diagram ini menggambarkan hal sebagai berikut:

  1. Aplikasi ini membuat pemverifikasi kode dan tantangan kode. Ini adalah nilai unik yang didefinisikan dengan baik yang dikirim ke Amazon Cognito untuk referensi di masa mendatang.

  2. Aplikasi memanggil titik akhir /oauth2/authorization dari Amazon Cognito. Ini secara otomatis mengarahkan pengguna ke login iDP yang dikonfigurasi.

  3. IdP memeriksa sesi yang ada. Jika tidak ada, pengguna menerima prompt untuk mengautentikasi dengan memberikan nama pengguna dan kata sandi mereka. IDP merespons dengan token SAMP ke Amazon Cognito.

  4. Setelah Amazon Cognito mengembalikan kesuksesan dengan token kode, server web memanggil /oauth2/token untuk menukar token kode dengan token akses.

  5. Token akses digunakan untuk setiap panggilan berikutnya ke aplikasi lain.

  6. Aplikasi lain memvalidasi token akses dengan Amazon Cognito.

Aliran ini harus digunakan:

  • Untuk SPAs atau aplikasi seluler

Aliran ini tidak boleh digunakan:

  • Jika backend aplikasi menangani otentikasi

Alur Kata Sandi Pemilik Sumber Daya

Alur Kata Sandi Pemilik Sumber Daya ditujukan untuk aplikasi tanpa kemampuan pengalihan. Itu dibangun dengan membuat formulir login di aplikasi Anda sendiri. Login diperiksa di Amazon Cognito melalui panggilan CLI atau SDK alih-alih mengandalkan aliran pengalihan. Federasi tidak dimungkinkan dalam alur otentikasi ini karena federasi memerlukan pengalihan berbasis browser.

Alur Kata Sandi Pemilik Sumber Daya untuk Amazon Cognito

Diagram ini menggambarkan hal sebagai berikut:

  1. Pengguna memasukkan kredensialnya pada formulir login yang disediakan oleh aplikasi.

  2. AWS Command Line Interface (AWS CLI) melakukan admin-initiated-authpanggilan ke Amazon Cognito.

    catatan

    Atau, Anda dapat menggunakan AWS SDKs alih-alih AWS CLI.

  3. Amazon Cognito mengembalikan token akses.

  4. Token akses digunakan untuk setiap panggilan berikutnya ke aplikasi lain.

  5. Aplikasi lain memvalidasi token akses dengan Amazon Cognito.

Aliran ini harus digunakan:

  • Saat memigrasikan klien yang ada yang menggunakan logika autentikasi langsung (seperti otentikasi akses dasar atau otentikasi akses intisari) ke OAuth dengan mengonversi kredensi yang disimpan menjadi token akses

Aliran ini tidak boleh digunakan:

  • Jika Anda ingin menggunakan identitas federasi

  • Jika aplikasi Anda mendukung pengalihan

Alat

Layanan AWS

  • Amazon Cognito menyediakan otentikasi, otorisasi, dan manajemen pengguna untuk aplikasi web dan seluler.

Alat-alat lainnya

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Tentukan persyaratan otentikasi.

Nilai aplikasi Anda sesuai dengan persyaratan otentikasi spesifik Anda.

Pengembang aplikasi, Arsitek aplikasi

Sejajarkan persyaratan dengan alur otentikasi.

Di bagian Arsitektur, gunakan tabel keputusan dan penjelasan dari setiap alur untuk memilih alur autentikasi Amazon Cognito Anda.

Pengembang aplikasi, AWS Umum, Arsitek aplikasi
TugasDeskripsiKeterampilan yang dibutuhkan

Membuat pengguna.

  1. Masuk ke AWS Management Console, lalu buka konsol Amazon Cognito.

  2. Buat kumpulan pengguna Cognito baru. Untuk petunjuknya, lihat kumpulan pengguna Amazon Cognito.

  3. Perbarui pengaturan dan atribut kumpulan pengguna sesuai kebutuhan. Misalnya, tetapkan kebijakan kata sandi untuk kumpulan pengguna. Jangan membuat klien aplikasi.

AWS Umum

(Opsional) Konfigurasikan penyedia identitas.

  1. Buat penyedia identitas SAMP di kumpulan pengguna Amazon Cognito. Untuk petunjuk, lihat Menambahkan dan mengelola penyedia identitas SAMP di kumpulan pengguna.

  2. Konfigurasikan penyedia identitas SAMP pihak ketiga Anda untuk bekerja dengan federasi untuk kumpulan pengguna Amazon Cognito. Untuk informasi selengkapnya, lihat Mengonfigurasi penyedia identitas SAMP pihak ketiga Anda. Jika Anda menggunakan AD FS, lihat Membangun Federasi AD FS untuk Aplikasi Web Anda menggunakan Kumpulan Pengguna Amazon Cognito (postingan blog AWS).

AWS Umum, Administrator Federasi

Buat klien aplikasi.

  1. Buat klien aplikasi untuk kumpulan pengguna. Untuk petunjuknya, lihat Membuat klien aplikasi. Perhatikan hal berikut:

    • Ubah pengaturan sesuai kebutuhan, seperti kedaluwarsa token.

    • Jika alur otentikasi Anda tidak memerlukan rahasia klien, kosongkan kotak centang Hasilkan rahasia klien.

  2. Pilih Pengaturan klien aplikasi untuk mengubah integrasinya ke login kumpulan pengguna (nama pengguna dan kata sandi) atau login gabungan melalui IDP berbasis SAMP.

  3. Aktifkan IDP Anda dengan mendefinisikan URLs dan mendefinisikan OAuth alur atau cakupan sesuai kebutuhan.

AWS Umum
TugasDeskripsiKeterampilan yang dibutuhkan

Tukarkan detail integrasi Amazon Cognito.

Bergantung pada alur autentikasi Anda, bagikan informasi Amazon Cognito dengan aplikasi, seperti ID kumpulan pengguna dan ID klien aplikasi.

Pengembang aplikasi, AWS Umum

Menerapkan otentikasi Amazon Cognito.

Ini tergantung pada alur otentikasi yang Anda pilih, bahasa pemrograman Anda, dan kerangka kerja yang Anda gunakan. Untuk beberapa tautan untuk memulai, lihat bagian Sumber daya terkait.

Pengembang aplikasi

Sumber daya terkait

Dokumentasi AWS

Postingan blog AWS

Mitra implementasi

Informasi tambahan

FAQ

Mengapa aliran Implisit tidak digunakan lagi?

Sejak rilis framework OAuth 2.1, aliran Implicit ditandai sebagai usang karena alasan keamanan. Sebagai alternatif, silakan gunakan alur Kode Otorisasi dengan PKCE yang dijelaskan di bagian Arsitektur.

Bagaimana jika Amazon Cognito tidak menawarkan beberapa fungsionalitas yang saya butuhkan?

AWS Partners menawarkan integrasi yang berbeda untuk solusi otentikasi dan otorisasi. Untuk informasi selengkapnya, lihat AWS Partners untuk solusi autentikasi.

Bagaimana dengan aliran kumpulan identitas Amazon Cognito?

Kumpulan pengguna Amazon Cognito dan identitas federasi adalah untuk otentikasi. Kumpulan identitas Amazon Cognito digunakan untuk otorisasi akses sumber daya AWS dengan meminta kredensil AWS sementara. Token ID dan pertukaran token akses untuk kumpulan identitas tidak dibahas dalam pola ini. Untuk informasi selengkapnya, lihat Apa perbedaan antara kumpulan pengguna Amazon Cognito dan kumpulan identitas dan skenario Amazon Cognito Umum.

Langkah selanjutnya

Pola ini memberikan gambaran umum tentang alur otentikasi Amazon Cognito. Sebagai langkah selanjutnya, implementasi rinci untuk bahasa pemrograman aplikasi perlu dipilih. Beberapa penawaran bahasa SDKs dan kerangka kerja, yang dapat Anda gunakan dengan Amazon Cognito. Untuk referensi yang bermanfaat, lihat bagian Sumber daya terkait.