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
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
-
Kumpulan identitas Anda mengembalikan ID identitas.
-
Aplikasi Anda menggabungkan ID identitas dengan bukti otentikasi yang sama dalam GetCredentialsForIdentitypermintaan.
-
Kumpulan identitas Anda mengembalikan AWS kredensialnya.
-
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
-
GetId
-
GetCredentialsForIdentity
Authflow dasar (klasik)
Saat Anda menggunakan authflow dasar,
-
Kumpulan identitas Anda mengembalikan ID identitas.
-
Aplikasi Anda menggabungkan ID identitas dengan bukti otentikasi yang sama dalam GetOpenIdTokenpermintaan.
-
GetOpenIdToken
mengembalikan token OAuth 2.0 baru yang dikeluarkan oleh kumpulan identitas Anda. -
Aplikasi Anda menyajikan token baru dalam AssumeRoleWithWebIdentitypermintaan.
-
AWS Security Token Service AWS STS) mengembalikan AWS kredensi.
-
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. GetCredentialsForIdentity
Permintaan authflow yang disempurnakan meminta peran berdasarkan konten token akses. AssumeRoleWithWebIdentity
Permintaan 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
-
GetId
-
GetOpenIdToken
-
AssumeRoleWithWebIdentity
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
-
Login melalui Penyedia Developer (kode di luar Amazon Cognito)
-
Validasi login pengguna (kode di luar Amazon Cognito)
Urutan operasi dalam otentikasi Dasar dengan penyedia pengembang
-
Terapkan logika di luar kumpulan identitas untuk masuk dan menghasilkan pengenal pengembang-penyedia.
-
Ambil kredensial-sisi server AWS yang tersimpan.
-
Kirim pengenal penyedia pengembang dalam GetOpenIdTokenForDeveloperIdentityAPIpermintaan yang ditandatangani dengan AWS kredensil resmi.
-
Minta kredensi aplikasi dengan. AssumeRoleWithWebIdentity
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
GetId
API. 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 ke
GetId
, 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 dengan
GetOpenIdToken
.Tanggapan terhadap
GetOpenIdToken
API permintaan adalah token yang dihasilkan Amazon Cognito. Anda dapat mengirimkan token ini sebagaiWebIdentityToken
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-verify
untuk mengonfirmasi bahwa Amazon Cognito mengeluarkan token. ID kunci penandatanganan, atau kid
, 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 dariGetOpenIdToken
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 identitasGetOpenIdToken
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 sebagaiWebIdentityToken
parameter dalamAssumeRoleWithWebIdentity
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-verify
untuk mengonfirmasi bahwa Amazon Cognito mengeluarkan token. ID kunci penandatanganan, atau kid
, 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
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. |
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.