Aliran otentikasi kumpulan identitas - Amazon Cognito

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

Aliran otentikasi kumpulan identitas

Amazon Cognito membantu Anda membuat pengidentifikasi unik untuk pengguna akhir Anda yang tetap konsisten di seluruh perangkat dan platform. Amazon Cognito juga memberikan kredenal hak istimewa terbatas sementara ke aplikasi Anda untuk mengakses sumber daya. AWS Halaman ini membahas dasar-dasar cara kerja otentikasi di Amazon Cognito dan menjelaskan siklus hidup identitas di dalam kumpulan identitas Anda.

Authflow penyedia eksternal

Seorang pengguna yang mengautentikasi dengan Amazon Cognito melalui proses multi-langkah untuk mem-bootstrap kredensialnya. Amazon Cognito memiliki dua alur berbeda untuk autentikasi dengan penyedia publik: ditingkatkan dan dasar.

Setelah menyelesaikan salah satu alur ini, Anda dapat mengakses aliran lain Layanan AWS seperti yang ditentukan oleh kebijakan akses peran Anda. Secara default, konsol Amazon Cognito membuat peran dengan akses ke toko Amazon Cognito Sync dan ke Amazon Mobile Analytics. Untuk informasi selengkapnya tentang cara memberikan akses tambahan, lihatIAMperan.

Identity pool menerima artefak berikut dari penyedia:

Penyedia Artefak otentikasi
Kolam pengguna Amazon Cognito Token ID
OpenID Connect () OIDC Token ID
SAML 2.0 SAMLpernyataan
Penyedia sosial Token akses

Authflow yang ditingkatkan (disederhanakan)

Saat Anda menggunakan authflow yang disempurnakan, aplikasi Anda terlebih dahulu menampilkan bukti autentikasi dari kumpulan pengguna Amazon Cognito resmi atau penyedia identitas pihak ketiga dalam permintaan. GetId

  1. Aplikasi Anda menyajikan bukti autentikasi—token JSON web atau SAML pernyataan— dari kumpulan pengguna Amazon Cognito resmi atau penyedia identitas pihak ketiga dalam permintaan getID.

  2. Kumpulan identitas Anda mengembalikan ID identitas.

  3. Aplikasi Anda menggabungkan ID identitas dengan bukti otentikasi yang sama dalam GetCredentialsForIdentitypermintaan.

  4. Kumpulan identitas Anda mengembalikan AWS kredensialnya.

  5. Aplikasi Anda menandatangani AWS API permintaan dengan kredensi sementara.

Otentikasi yang disempurnakan mengelola logika pemilihan IAM peran dan pengambilan kredensional dalam konfigurasi kumpulan identitas Anda. Anda dapat mengonfigurasi kumpulan identitas untuk memilih peran default, untuk menerapkan prinsip kontrol akses () berbasis atribut (ABAC) atau kontrol akses berbasis peran (RBAC) ke pemilihan peran. AWS Kredensi dari otentikasi yang disempurnakan berlaku selama satu jam.

Urutan operasi dalam otentikasi yang ditingkatkan
  1. GetId

  2. GetCredentialsForIdentity

Diagram yang menunjukkan aliran otentikasi yang ditingkatkan

Authflow dasar (klasik)

Saat Anda menggunakan authflow dasar,

  1. Aplikasi Anda menyajikan bukti autentikasi—token JSON web atau SAML pernyataan— dari kumpulan pengguna Amazon Cognito resmi atau penyedia identitas pihak ketiga dalam permintaan getID.

  2. Kumpulan identitas Anda mengembalikan ID identitas.

  3. Aplikasi Anda menggabungkan ID identitas dengan bukti otentikasi yang sama dalam GetOpenIdTokenpermintaan.

  4. GetOpenIdTokenmengembalikan token OAuth 2.0 baru yang dikeluarkan oleh kumpulan identitas Anda.

  5. Aplikasi Anda menyajikan token baru dalam AssumeRoleWithWebIdentitypermintaan.

  6. AWS Security Token Service AWS STS) mengembalikan AWS kredensi.

  7. Aplikasi Anda menandatangani AWS API permintaan dengan kredensi sementara.

Alur kerja dasar memberi Anda kontrol yang lebih terperinci atas kredenal yang Anda distribusikan ke pengguna Anda. GetCredentialsForIdentityPermintaan authflow yang disempurnakan meminta peran berdasarkan konten token akses. AssumeRoleWithWebIdentityPermintaan dalam alur kerja klasik memberi aplikasi Anda kemampuan yang lebih besar untuk meminta kredensional untuk AWS Identity and Access Management peran apa pun yang telah Anda konfigurasikan dengan kebijakan kepercayaan yang memadai. Anda juga dapat meminta durasi sesi peran khusus.

Anda dapat masuk dengan authflow Dasar di kumpulan pengguna yang tidak memiliki pemetaan peran. Jenis kumpulan identitas ini tidak memiliki peran default yang diautentikasi atau tidak diautentikasi, dan tidak memiliki kontrol akses berbasis peran atau atribut yang dikonfigurasi. Saat Anda mencoba GetOpenIdToken di kumpulan identitas dengan pemetaan peran, Anda menerima kesalahan berikut.

Basic (classic) flow is not supported with RoleMappings, please use enhanced flow.
Urutan operasi dalam otentikasi Dasar
  1. GetId

  2. GetOpenIdToken

  3. AssumeRoleWithWebIdentity

Diagram yang menunjukkan aliran otentikasi dasar

Identitas otentikasi pengembang authflow

Saat menggunakanIdentitas yang diautentikasi pengembang, klien menggunakan authflow berbeda yang menyertakan kode di luar Amazon Cognito untuk memvalidasi pengguna di sistem autentikasi Anda sendiri. Kode di luar Amazon Cognito ditunjukkan seperti itu.

Authflow yang disempurnakan

Urutan operasi dalam otentikasi yang ditingkatkan dengan penyedia pengembang
  1. Login melalui Penyedia Developer (kode di luar Amazon Cognito)

  2. Validasi login pengguna (kode di luar Amazon Cognito)

  3. GetOpenIdTokenForDeveloperIdentity

  4. GetCredentialsForIdentity

Diagram yang menunjukkan aliran otentikasi ditingkatkan yang diautentikasi pengembang
Urutan operasi dalam otentikasi Dasar dengan penyedia pengembang
  1. Terapkan logika di luar kumpulan identitas untuk masuk dan menghasilkan pengenal pengembang-penyedia.

  2. Ambil kredensial-sisi server AWS yang tersimpan.

  3. Kirim pengenal penyedia pengembang dalam GetOpenIdTokenForDeveloperIdentityAPIpermintaan yang ditandatangani dengan AWS kredensil resmi.

  4. Minta kredensi aplikasi dengan. AssumeRoleWithWebIdentity

Diagram yang menunjukkan aliran otentikasi dasar yang diautentikasi pengembang

Authflow mana yang harus saya gunakan?

Aliran yang ditingkatkan adalah pilihan paling aman dengan tingkat upaya pengembang terendah:

  • Aliran yang ditingkatkan mengurangi kompleksitas, ukuran, dan laju API permintaan.

  • Aplikasi Anda tidak perlu membuat API permintaan tambahan AWS STS.

  • Kumpulan identitas Anda mengevaluasi pengguna Anda untuk kredensi IAM peran yang harus mereka terima. Anda tidak perlu menanamkan logika untuk pemilihan peran di klien Anda.

penting

Saat Anda membuat kumpulan identitas baru, jangan aktifkan otentikasi dasar (klasik) secara default, sebagai praktik terbaik. Untuk menerapkan otentikasi dasar, pertama-tama evaluasi hubungan kepercayaan IAM peran Anda untuk identitas web. Kemudian bangun logika untuk pemilihan peran ke klien Anda dan amankan klien dari modifikasi oleh pengguna.

Alur otentikasi dasar mendelegasikan logika pemilihan IAM peran ke aplikasi Anda. Dalam alur ini, Amazon Cognito memvalidasi sesi yang diautentikasi atau tidak diautentikasi pengguna Anda dan mengeluarkan token yang dapat Anda tukarkan dengan kredensialnya. AWS STS Pengguna dapat menukar token dari otentikasi dasar untuk IAM peran apa pun yang mempercayai kumpulan identitas Anda danamr, atau status yang diautentikasi/tidak diautentikasi.

Demikian pula, pahami bahwa otentikasi pengembang adalah jalan pintas seputar validasi otentikasi penyedia identitas. Amazon Cognito mempercayai AWS kredensi yang mengotorisasi GetOpenIdTokenForDeveloperIdentitypermintaan tanpa validasi tambahan dari konten permintaan. Amankan rahasia yang mengotorisasi otentikasi pengembang dari akses oleh pengguna.

APIringkasan

GetId

GetIdAPIPanggilan tersebut adalah panggilan pertama yang diperlukan untuk membangun identitas baru di Amazon Cognito.

Akses tidak diautentikasi

Amazon Cognito dapat memberikan akses tamu yang tidak diautentikasi di aplikasi Anda. Jika fitur ini diaktifkan di kumpulan identitas Anda, pengguna dapat meminta ID identitas baru kapan saja melalui GetIdAPI. Aplikasi diharapkan meng-cache ID identitas ini untuk melakukan panggilan berikutnya ke Amazon Cognito. AWS Ponsel SDKs dan AWS SDK for JavaScript di Browser memiliki penyedia kredensi yang menangani caching ini untuk Anda.

Akses yang diautentikasi

Ketika Anda telah mengonfigurasi aplikasi Anda dengan dukungan untuk penyedia login publik (Facebook, Google+, Login with Amazon, atau Masuk dengan Apple), pengguna juga dapat menyediakan token (atau OAuth OpenID Connect) yang mengidentifikasi mereka di penyedia tersebut. Saat digunakan dalam panggilan keGetId, Amazon Cognito membuat identitas baru yang diautentikasi atau mengembalikan identitas yang sudah dikaitkan dengan login tertentu. Amazon Cognito melakukan ini dengan memvalidasi token dengan penyedia dan memastikan hal-hal berikut:

  • Token valid dan dari penyedia yang dikonfigurasi.

  • Token tidak kedaluwarsa.

  • Token cocok dengan pengenal aplikasi yang dibuat dengan penyedia itu (misalnya, ID aplikasi Facebook).

  • Token cocok dengan pengenal pengguna.

GetCredentialsForIdentity

GetCredentialsForIdentityAPIDapat dipanggil setelah Anda membuat ID identitas. Operasi ini secara fungsional setara dengan memanggil GetOpenIdToken, kemudian AssumeRoleWithWebIdentity.

Agar Amazon Cognito dapat menelepon AssumeRoleWithWebIdentity atas nama Anda, kumpulan identitas Anda harus memiliki IAM peran yang terkait dengannya. Anda dapat melakukan ini melalui konsol Amazon Cognito atau secara manual melalui operasi. SetIdentityPoolRoles

GetOpenIdToken

Buat GetOpenIdTokenAPIpermintaan setelah Anda membuat ID identitas. Cache identitas IDs setelah permintaan pertama Anda, dan mulai sesi dasar (klasik) berikutnya untuk identitas itu denganGetOpenIdToken.

Tanggapan terhadap GetOpenIdToken API permintaan adalah token yang dihasilkan Amazon Cognito. Anda dapat mengirimkan token ini sebagai WebIdentityToken parameter dalam AssumeRoleWithWebIdentitypermintaan.

Sebelum Anda mengirimkan token OpenID, verifikasi di aplikasi Anda. Anda dapat menggunakan OIDC pustaka di perpustakaan Anda SDK atau perpustakaan seperti aws-jwt-verifyuntuk mengonfirmasi bahwa Amazon Cognito mengeluarkan token. ID kunci penandatanganan, ataukid, dari token OpenID adalah salah satu yang tercantum dalam Identitas Amazon Cognito jwks_uri dokumen †. Kunci-kunci ini dapat berubah. Fungsi Anda yang memverifikasi token Identitas Amazon Cognito harus memperbarui daftar kuncinya secara berkala dari dokumen jwks_uri. Amazon Cognito menetapkan durasi penyegaran di header respons kontrol cache jwks_uri, yang saat ini disetel ke 30 hari. max-age

Akses tidak diautentikasi

Untuk mendapatkan token untuk identitas yang tidak diautentikasi, Anda hanya memerlukan ID identitas itu sendiri. Tidak mungkin mendapatkan token yang tidak diautentikasi untuk identitas atau identitas yang telah diautentikasi yang telah Anda nonaktifkan.

Akses yang diautentikasi

Jika Anda memiliki identitas yang diautentikasi, Anda harus memberikan setidaknya satu token yang valid untuk login yang telah dikaitkan dengan identitas tersebut. Semua token yang diteruskan selama GetOpenIdToken panggilan harus melewati validasi yang sama yang disebutkan sebelumnya; jika salah satu token gagal, seluruh panggilan gagal. Tanggapan dari GetOpenIdToken panggilan juga mencakup ID identitas. Ini karena ID identitas yang Anda lewati mungkin bukan yang dikembalikan.

Menautkan login

Jika Anda mengirimkan token untuk login yang belum dikaitkan dengan identitas apa pun, login dianggap “ditautkan” ke identitas terkait. Anda hanya dapat menautkan satu login per penyedia publik. Upaya untuk menautkan lebih dari satu login dengan penyedia publik menghasilkan respons ResourceConflictException kesalahan. Jika login hanya ditautkan ke identitas yang ada, ID identitas GetOpenIdToken yang dikembalikan sama dengan yang Anda lewatkan.

Menggabungkan identitas

Jika Anda memberikan token untuk login yang saat ini tidak ditautkan ke identitas yang diberikan, tetapi ditautkan ke identitas lain, kedua identitas tersebut akan digabungkan. Setelah digabungkan, satu identitas menjadi parent/owner of all associated logins and the other is disabled. In this case, the identity ID of the parent/owner dikembalikan. Anda harus memperbarui cache lokal Anda jika nilai ini berbeda. Penyedia di AWS Ponsel SDKs atau AWS SDK untuk JavaScript di Browser melakukan operasi ini untuk Anda.

GetOpenIdTokenForDeveloperIdentity

GetOpenIdTokenForDeveloperIdentityOperasi menggantikan penggunaan GetIddan GetOpenIdTokendari perangkat saat menggunakan identitas otentikasi pengembang. Karena aplikasi Anda menandatangani permintaan ke API operasi ini dengan AWS kredensional, Amazon Cognito percaya bahwa pengenal pengguna yang disediakan dalam permintaan tersebut valid. Otentikasi pengembang menggantikan validasi token yang dilakukan Amazon Cognito dengan penyedia eksternal.

Muatan untuk ini API termasuk logins peta. Peta ini harus berisi kunci penyedia pengembang Anda dan nilai sebagai pengenal bagi pengguna di sistem Anda. Jika pengenal pengguna belum ditautkan ke identitas yang ada, Amazon Cognito akan membuat identitas baru dan mengembalikan ID identitas baru dan token OpenID Connect untuk identitas tersebut. Jika pengenal pengguna sudah ditautkan, Amazon Cognito mengembalikan ID identitas yang sudah ada sebelumnya dan token OpenID Connect. Cache identitas pengembang IDs setelah permintaan pertama Anda, dan mulai sesi dasar (klasik) berikutnya untuk identitas ituGetOpenIdTokenForDeveloperIdentity.

Tanggapan terhadap GetOpenIdTokenForDeveloperIdentity API permintaan adalah token yang dihasilkan Amazon Cognito. Anda dapat mengirimkan token ini sebagai WebIdentityToken parameter dalam AssumeRoleWithWebIdentity permintaan.

Sebelum Anda mengirimkan token OpenID Connect, verifikasi di aplikasi Anda. Anda dapat menggunakan OIDC pustaka di perpustakaan Anda SDK atau perpustakaan seperti aws-jwt-verifyuntuk mengonfirmasi bahwa Amazon Cognito mengeluarkan token. ID kunci penandatanganan, ataukid, dari token OpenID Connect adalah salah satu yang tercantum dalam dokumen jwks_uri Amazon Cognito Identity †. Kunci-kunci ini dapat berubah. Fungsi Anda yang memverifikasi token Identitas Amazon Cognito harus memperbarui daftar kuncinya secara berkala dari dokumen jwks_uri. Amazon Cognito menetapkan durasi penyegaran di header cache-control respons jwks_uri, yang saat ini disetel ke 30 hari. max-age

Menautkan login

Seperti penyedia eksternal, menyediakan login tambahan yang belum dikaitkan dengan identitas secara implisit menghubungkan login tersebut ke identitas tersebut. Jika Anda menautkan login penyedia eksternal ke identitas, pengguna dapat menggunakan authflow penyedia eksternal dengan penyedia tersebut. Namun, mereka tidak dapat menggunakan nama penyedia pengembang Anda di peta login saat menelepon GetId atauGetOpenIdToken.

Menggabungkan identitas

Dengan identitas otentikasi pengembang, Amazon Cognito mendukung penggabungan implisit dan penggabungan eksplisit melalui. MergeDeveloperIdentitiesAPI Dengan penggabungan eksplisit, Anda dapat menandai dua identitas dengan pengidentifikasi pengguna di sistem Anda sebagai identitas tunggal. Jika Anda menyediakan pengenal pengguna sumber dan tujuan, Amazon Cognito menggabungkannya. Lain kali Anda meminta token OpenID Connect untuk salah satu pengenal pengguna, id identitas yang sama akan dikembalikan.

AssumeRoleWithWebIdentity

Setelah Anda memiliki token OpenID Connect, Anda kemudian dapat menukar ini untuk AWS kredensi sementara melalui AssumeRoleWithWebIdentityAPIpermintaan ke (). AWS Security Token Service AWS STS

Karena tidak ada batasan jumlah identitas yang dapat Anda buat, penting untuk memahami izin yang Anda berikan kepada pengguna Anda. Siapkan IAM peran yang berbeda untuk aplikasi Anda: satu untuk pengguna yang tidak diautentikasi, dan satu untuk pengguna yang diautentikasi. Konsol Amazon Cognito dapat membuat peran default saat pertama kali mengatur kumpulan identitas Anda. Peran ini secara efektif tidak memiliki izin yang diberikan. Ubah mereka untuk memenuhi kebutuhan Anda.

Pelajari lebih lanjut tentang Kepercayaan peran dan izin.

† Dokumen jwks_uri Identitas Amazon Cognito default berisi informasi tentang kunci yang menandatangani token untuk kumpulan identitas di sebagian besar. Wilayah AWS Daerah berikut memiliki dokumen jwks_uri yang berbeda.

Amazon Cognito Identity JSON web key URIs in other Wilayah AWS
Wilayah AWS Jalur ke dokumen jwks_uri
AWS GovCloud (AS-Barat) https://cognito-identity.us-gov-west-1.amazonaws.com/.well-known/jwks_uri
Tiongkok (Beijing) https://cognito-identity---cn-north-1.amazonaws.com.rproxy.goskope.com.cn/.well-known/jwks_uri
Opt-in Regions seperti Eropa (Milan) dan Afrika (Cape Town) https://cognito-identity.Region.amazonaws.com/.well-known/jwks_uri

Anda juga dapat mengekstrapolasi jwks_uri dari penerbit atau yang iss Anda terima di token OpenID dari Amazon Cognito. Titik akhir penemuan OIDC -standard <issuer>/.well-known/openid-configuration mencantumkan jalur ke jwks_uri untuk token Anda.