Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Model otorisasi untuk otentikasi API dan SDK
Saat memulai pengembangan aplikasi dengan otentikasi kumpulan pengguna, Anda harus memutuskan model otorisasi API yang sesuai dengan jenis aplikasi Anda. Model otorisasi adalah sistem untuk memberikan otorisasi untuk membuat permintaan dengan komponen otentikasi dalam integrasi API dan SDK kumpulan pengguna Amazon Cognito. Amazon Cognito memiliki tiga model otorisasi: publik IAM-authorized, dan otorisasi token.
Dengan IAM-authorized permintaan, otorisasi berasal dari tanda tangan oleh satu set kredenSIAL AWS
IAM di Authorization header permintaan. Untuk aplikasi sisi server, praktik ini melindungi operasi otentikasi dengan otorisasi IAM. Dengan permintaan otentikasi publik (tidak diautentikasi), tidak diperlukan otorisasi. Ini cocok untuk aplikasi sisi klien yang didistribusikan ke pengguna. Dengan operasi otorisasi token, biasanya diimplementasikan dalam kombinasi dengan operasi publik, otorisasi berasal dari token sesi atau token akses yang termasuk dalam Authorization header permintaan. Otentikasi Amazon Cognito biasanya mengharuskan Anda menerapkan dua atau lebih operasi API secara berurutan, dan operasi API yang Anda gunakan bergantung pada karakteristik aplikasi Anda. Klien publik, tempat aplikasi didistribusikan ke pengguna, menggunakan operasi publik, di mana permintaan untuk masuk tidak memerlukan otorisasi. Token-authorized operasi melanjutkan sesi pengguna dalam aplikasi publik. Server-side klien, di mana logika aplikasi dihosting pada sistem jarak jauh, melindungi operasi otentikasi dengan otorisasi IAM untuk permintaan masuk. Pasangan operasi API yang mengikuti, dan metode SDK yang sesuai, dipetakan ke model otorisasi yang tersedia.
Setiap operasi otentikasi publik memiliki beberapa bentuk setara sisi server, misalnya UpdateUserAttributes dan. AdminUpdateUserAttributes Sementara operasi sisi klien diprakarsai pengguna dan memerlukan konfirmasi, operasi sisi server mengasumsikan perubahan dilakukan oleh administrator kumpulan pengguna dan perubahan segera berlaku. Dalam contoh ini, Amazon Cognito mengirimkan pesan dengan kode konfirmasi kepada pengguna, dan token akses pengguna mengotorisasi VerifyUserAttribute permintaan yang mengirimkan kode. Aplikasi sisi server dapat segera mengatur nilai atribut apa pun, meskipun pertimbangan khusus berlaku untuk mengubah nilai alamat email dan nomor telepon saat digunakan untuk masuk.
Untuk membandingkan otentikasi API dan melihat daftar lengkap operasi API dan model otorisasinya, lihatMemahami API, OIDC, dan otentikasi halaman login terkelola.
Pengguna mengotentikasi dengan menjawab tantangan berturut-turut sampai otentikasi gagal atau Amazon Cognito mengeluarkan token kepada pengguna. Anda dapat mengulangi langkah-langkah ini dengan Amazon Cognito, dalam proses yang mencakup tantangan berbeda, untuk mendukung aliran otentikasi khusus apa pun.
Topik
Server-side opsi otentikasi
Aplikasi web dan aplikasi sisi server lainnya menerapkan otentikasi pada server jarak jauh yang dimuat klien dalam aplikasi tampilan jarak jauh seperti browser atau sesi SSH. Server-side aplikasi biasanya memiliki karakteristik sebagai berikut.
-
Mereka dibangun dalam aplikasi yang diinstal pada server dalam bahasa seperti Java, Ruby, atau Node.js.
-
Mereka terhubung ke klien aplikasi kumpulan pengguna yang mungkin memiliki rahasia klien, yang disebut klien rahasia.
-
Mereka memiliki akses ke AWS kredensi.
-
Mereka memanggil login terkelola untuk otentikasi, atau menggunakan IAM-authorized operasi di API kumpulan pengguna dengan AWS SDK.
-
Mereka melayani pelanggan internal dan mungkin melayani pelanggan publik.
Server-side operasi dengan API kumpulan pengguna dapat menggunakan kata sandi, kata sandi satu kali, atau kunci sandi sebagai faktor masuk utama. Untuk aplikasi sisi server, otentikasi kumpulan pengguna mirip dengan otentikasi untuk aplikasi sisi klien, kecuali untuk yang berikut:
-
Aplikasi sisi server membuat permintaan AdminInitiateAuth API. Operasi ini membutuhkan AWS kredenSIAL dengan izin yang mencakup
cognito-idp:AdminInitiateAuthdancognito-idp:AdminRespondToAuthChallenge. Operasi mengembalikan tantangan atau hasil otentikasi yang diperlukan. -
Ketika aplikasi menerima tantangan, itu membuat permintaan AdminRespondToAuthChallenge API. Operasi
AdminRespondToAuthChallengeAPI juga membutuhkan AWS kredenSIAL.
Untuk informasi selengkapnya tentang menandatangani permintaan Amazon Cognito API dengan AWS kredenSIAL, lihat Proses penandatanganan Tanda Tangan Versi 4 di Refer AWS ensi Umum.
Dalam AdminInitiateAuth responsChallengeParameters, USER_ID_FOR_SRP atribut, jika ada, berisi nama pengguna yang sebenarnya, bukan alias (seperti alamat email atau nomor telepon). Dalam panggilan Anda keAdminRespondToAuthChallenge, diChallengeResponses, Anda harus meneruskan nama pengguna ini di USERNAME parameter.
catatan
Karena implementasi admin backend menggunakan alur otentikasi admin, alur tidak mendukung perangkat yang diingat. Saat Anda mengaktifkan pelacakan perangkat, otentikasi admin berhasil, tetapi panggilan apa pun untuk menyegarkan token akses gagal.
Client-side opsi otentikasi
Aplikasi seluler dan jenis aplikasi sisi klien lainnya diinstal pada perangkat pengguna dan melakukan logika otentikasi dan antarmuka pengguna secara lokal. Mereka biasanya memiliki karakteristik sebagai berikut.
-
Mereka dibangun dalam bahasa seperti React native, Flutter, dan Swift dan diterapkan ke perangkat pengguna.
-
Mereka terhubung ke klien aplikasi kumpulan pengguna yang tidak memiliki rahasia klien, yang disebut klien publik.
-
Mereka tidak memiliki akses ke AWS kredenSIAL yang akan mengotorisasi permintaan IAM-authorized API.
-
Mereka memanggil login terkelola untuk otentikasi, atau menggunakan operasi publik dan token resmi di API kumpulan pengguna dengan SDK. AWS
-
Mereka melayani pelanggan publik dan mengizinkan siapa pun untuk mendaftar dan masuk.
Client-side operasi dengan API kumpulan pengguna dapat menggunakan kata sandi, kata sandi satu kali, atau kunci sandi sebagai faktor masuk utama. Proses berikut berfungsi untuk aplikasi sisi klien pengguna yang Anda buat dengan AWS Amplify
-
Pengguna memasukkan nama pengguna dan kata sandi mereka ke dalam aplikasi.
-
Aplikasi memanggil
InitiateAuthoperasi dengan nama pengguna pengguna dan detail Secure Remote Password (SRP).Operasi API ini mengembalikan parameter otentikasi.
catatan
Aplikasi ini menghasilkan detail SRP dengan fitur Amazon Cognito SRP yang dibangun ke SDK. AWS
-
Aplikasi ini memanggil operasi
RespondToAuthChallenge. Jika panggilan berhasil, Amazon Cognito mengembalikan token pengguna, dan alur otentikasi selesai.Jika Amazon Cognito memerlukan tantangan lain, panggilan untuk tidak
RespondToAuthChallengemengembalikan token. Sebaliknya, panggilan mengembalikan sesi. -
Jika
RespondToAuthChallengemengembalikan sesi, aplikasi memanggilRespondToAuthChallengelagi, kali ini dengan sesi dan respons tantangan (misalnya, kode MFA).
Memahami API, OIDC, dan otentikasi halaman login terkelola
Kumpulan pengguna Amazon Cognito adalah kombinasi dari beberapa teknologi otentikasi. Mereka mengandalkan pihak kepada penyedia identitas eksternal (IdPs). Mereka IdPs untuk aplikasi yang menerapkan otentikasi dengan OpenID Connect (OIDC) SDK. Mereka menyediakan otentikasi sebagai penerbit token web JSON (JWT) yang mirip dengan otentikasi OIDC, tetapi dalam metode API yang merupakan bagian dari SDK. AWS Mereka juga dapat menjadi titik masuk yang aman ke aplikasi Anda.
Saat Anda ingin mendaftar, masuk, dan mengelola pengguna di kumpulan pengguna Anda, Anda memiliki dua opsi.
-
Halaman login terkelola Anda dan UI yang di hosting klasik menyer takan titik akhir interaktif pengguna login terkel ola dan titik akhir federasi yang menangani peran IdP dan relying-party. Mereka membentuk paket halaman web publik yang diaktifkan Amazon Cognito ketika Anda memilih domain untuk kumpulan pengguna Anda. Untuk memulai dengan cepat fitur otentikasi dan otorisasi kumpulan pengguna Amazon Cognito, termasuk halaman untuk pendaftaran, masuk, manajemen kata sandi, dan otentikasi multi-faktor (MFA), gunakan antarmuka pengguna bawaan dari login terkelola.
Titik akhir kumpulan pengguna lainnya memfasilitasi otentikasi dengan penyedia identitas pihak ketiga (IdPs). Layanan yang mereka lakukan meliputi yang berikut ini.
-
Service-provider titik akhir panggilan balik untuk klaim yang diautentikasi dari Anda IdPs, suka, dan.
saml2/idpresponseoauth2/idpresponseJika Amazon Cognito adalah penyedia layanan perantara (SP) antara aplikasi dan IdP Anda, titik akhir callback mewakili layanan tersebut. -
Titik akhir yang memberikan informasi tentang lingkungan Anda, seperti
oauth2/userInfodan/.well-known/jwks.json. Aplikasi Anda menggunakan titik akhir ini saat memverifikasi token atau mengambil data profil pengguna dengan pustaka pengembang OIDC atau OAuth 2.0.
-
-
API kumpulan pengguna Amazon Cognito adalah seperangkat alat untuk aplikasi web atau seluler Anda untuk mengotentikasi pengguna setelah mengumpulkan informasi masuk di front end khusus Anda sendiri. Otentikasi API kumpulan pengguna menghasilkan token web JSON berikut.
-
Token identitas dengan klaim atribut yang dapat diverifikasi dari pengguna Anda.
-
Token akses yang memberi wewenang kepada pengguna Anda untuk membuat permintaan API resmi token ke titik akhir layanan. AWS
catatan
Secara default, token akses dari otentikasi API kumpulan pengguna hanya berisi cak
aws.cognito.signin.user.adminupan. Untuk menghasilkan token akses dengan cakupan tambahan, misalnya untuk mengotorisasi permintaan ke API pihak ketiga, minta cakupan selama otentikasi melalui titik akhir kumpulan pengguna Anda atau tambahkan cakupan khusus di a. Pemicu Lambda generasi pra token Kustomisasi token akses menambah biaya ke AWS tagihan Anda. -
Token penyegaran yang mengotorisasi permintaan untuk ID baru dan token akses, serta menyegarkan identitas pengguna dan properti kontrol akses.
-
Anda dapat menautkan pengguna federasi, yang biasanya masuk melalui titik akhir kumpulan pengguna, dengan pengguna yang profilnya lokal ke kumpulan pengguna Anda. Pengguna lokal ada secara eksklusif di direktori kumpulan pengguna Anda tanpa federasi melalui IdP eksternal. Jika Anda menautkan identitas federasi mereka ke pengguna lokal dalam permintaan AdminLinkProviderForUser API, mereka dapat masuk dengan API kumpulan pengguna. Untuk informasi selengkapnya, lihat Menautkan pengguna federasi ke profil pengguna yang ada.
API kumpulan pengguna Amazon Cognito memiliki tujuan ganda.
-
Ini membuat dan mengonfigurasi sumber daya kumpulan pengguna Amazon Cognito Anda. Misalnya, Anda dapat membuat kumpulan pengguna, menambahkan AWS Lambda pemicu, dan mengonfigurasi domain kumpulan pengguna yang menghosting halaman login terkelola Anda.
-
Ini melakukan pendaftaran, masuk, dan operasi pengguna lainnya untuk pengguna lokal dan tertaut.
Contoh skenario dengan API kumpulan pengguna Amazon Cognito
-
Pengguna memilih tombol “Buat akun” yang Anda buat di aplikasi. Mereka memasukkan alamat email dan kata sandi.
-
Aplikasi Anda mengirimkan permintaan SignUp API dan membuat pengguna baru di kumpulan pengguna Anda.
-
Aplikasi Anda meminta pengguna untuk memberikan kode konfirmasi email. Pengguna Anda memasukkan kode yang mereka terima dalam pesan email.
-
Aplikasi Anda mengirimkan permintaan ConfirmSignUp API dengan kode konfirmasi pengguna.
-
Aplikasi Anda meminta pengguna untuk memasukkan nama pengguna dan kata sandi mereka, dan mereka memasukkan informasi mereka.
-
Aplikasi Anda mengirimkan permintaan InitiateAuth API dan menyimpan token ID, token akses, dan token penyegaran. Aplikasi Anda memanggil pustaka OIDC untuk mengelola token pengguna dan mempertahankan sesi persisten untuk pengguna tersebut.
Di API kumpulan pengguna Amazon Cognito, Anda tidak dapat masuk ke pengguna yang bergabung melalui IdP. Anda harus mengotentikasi pengguna ini melalui titik akhir kumpulan pengguna Anda. Untuk informasi selengkapnya tentang titik akhir kumpulan pengguna yang menyertakan login terkelola, lihatTitik akhir kumpulan pengguna dan referensi login terkelola.
Pengguna federasi Anda dapat memulai login terkelola dan memilih IdP mereka, atau Anda dapat melewati login terkelola dan mengirim pengguna Anda langsung ke IdP Anda untuk masuk. Saat permintaan API Anda ke parameter Otorisasi titik akhir include IdP, Amazon Cognito secara diam-diam mengarahkan pengguna Anda ke halaman masuk IdP.
Contoh skenario dengan halaman login terkelola
-
Pengguna memilih tombol “Buat akun” yang Anda buat di aplikasi.
-
Login terkelola menyajikan kepada pengguna Anda daftar penyedia identitas sosial tempat Anda telah mendaftarkan kredentif pengembang. Pengguna Anda memilih Apple.
-
Aplikasi Anda memulai permintaan ke Otorisasi titik akhir dengan nama
SignInWithApplepenyedia. -
Browser pengguna Anda membuka halaman otentikasi Apple. Pengguna Anda masuk dan memilih untuk mengotorisasi Amazon Cognito untuk membaca informasi profil mereka.
-
Amazon Cognito mengonfirmasi token akses Apple dan menanyakan profil Apple pengguna Anda.
-
Pengguna Anda menyajikan kode otorisasi Amazon Cognito ke aplikasi Anda.
-
Pustaka OIDC di aplikasi Anda menukar kode otorisasi dengan Titik akhir token dan menyimpan token ID, token akses, dan token penyegaran yang dikeluarkan oleh kumpulan pengguna. Aplikasi Anda menggunakan pustaka OIDC untuk mengelola token pengguna dan mempertahankan sesi persisten untuk pengguna tersebut.
API kumpulan pengguna dan halaman login terkelola mendukung berbagai skenario, dijelaskan di seluruh panduan ini. Bagian berikut membahas bagaimana API kumpulan pengguna lebih lanjut membagi menjadi kelas yang mendukung persyaratan pendaftaran, masuk, dan manajemen sumber daya Anda.
Daftar operasi API dikelompokkan berdasarkan model otorisasi
API kumpulan pengguna Amazon Cognito, baik antarmuka manajemen sumber daya maupun antarmuka otentikasi dan otorisasi yang menghadap pengguna, menggabungkan model otorisasi yang mengikuti operasinya. Bergantung pada operasi API, Anda mungkin harus memberikan otorisasi dengan kredentif IAM, token akses, token sesi, rahasia klien, atau kombinasi keduanya. Untuk banyak operasi otentikasi dan otorisasi pengguna, Anda memiliki pilihan versi permintaan yang diautentikasi dan tidak diautentikasi. Operasi yang tidak diautentikasi adalah praktik keamanan terbaik untuk aplikasi yang Anda distribusikan ke pengguna, seperti aplikasi seluler; Anda tidak perlu memasukkan rahasia apa pun dalam kode Anda.
Anda hanya dapat menetapkan izin dalam kebijakan IAM untuk IAM-authorized operasi manajemen danIAM-authorized operasi pengguna.
IAM-authorized operasi manajemen memodifikasi dan melihat kumpulan pengguna dan konfigurasi klien aplikasi Anda, seperti yang akan Anda lakukan di Konsol Manajemen AWS.
Misalnya, untuk mengubah kumpulan pengguna Anda dalam permintaan UpdateUserPool API, Anda harus menyajikan AWS kredenSIAL dan izin IAM untuk memperbarui sumber daya.
Untuk mengotorisasi permintaan ini di AWS Command Line Interface (AWS CLI) atau AWS SDK, konfigurasikan lingkungan Anda dengan variabel lingkungan atau konfigurasi klien yang menambahkan kredenSIAL IAM ke permintaan Anda. Untuk informasi selengkapnya, lihat Meng AWS akses menggunakan AWS kreden si Anda di Referensi Umum AWS. Anda juga dapat mengirim permintaan langsung ke titik akhir layanan untuk API kumpulan pengguna Amazon Cognito. Anda harus mengotorisasi, atau menandatangani, permintaan ini dengan AWS kredensional yang Anda sematkan di header permintaan Anda. Untuk informasi selengkapnya, lihat Menandatangani permintaan AWS API.
IAM-authorized operasi pengguna mendaftar, masuk, kelola kredenSIAL untuk, memodifikasi, dan melihat pengguna Anda.
Misalnya, Anda dapat memiliki tingkat aplikasi sisi server yang mendukung front end web. Aplikasi sisi server Anda adalah klien rahasia OAuth yang Anda percayai dengan akses istimewa ke sumber daya Amazon Cognito Anda. Untuk mendaftarkan pengguna di aplikasi, server Anda dapat menyertakan AWS kredenSIAL dalam permintaan AdminCreateUser API. Untuk informasi selengkapnya tentang jenis klien OAuth, lihat Jenis Klien
Untuk mengotorisasi permintaan ini di AWS CLI atau AWS SDK, konfigurasikan lingkungan aplikasi sisi server Anda dengan variabel lingkungan atau konfigurasi klien yang menambahkan kredentif IAM ke permintaan Anda. Untuk informasi selengkapnya, lihat Meng AWS akses menggunakan AWS kreden si Anda di Referensi Umum AWS. Anda juga dapat mengirim permintaan langsung ke titik akhir layanan untuk API kumpulan pengguna Amazon Cognito. Anda harus mengotorisasi, atau menandatangani, permintaan ini dengan AWS kredensional yang Anda sematkan di header permintaan Anda. Untuk informasi selengkapnya, lihat Menandatangani permintaan AWS API.
Jika klien aplikasi Anda memiliki rahasia klien, Anda harus memberikan kredentif IAM dan, tergantung pada operasinya, SecretHash parameter atau SECRET_HASH nilai di AuthParameters dalamnya. Untuk informasi selengkapnya, lihat Menghitung nilai hash rahasia.
Operasi pengguna yang tidak diautentikasi mendaftar, masuk, dan memulai pengaturan ulang kata sandi untuk pengguna Anda. Gunakan operasi API yang tidak diautentikasi, atau publik, saat Anda ingin siapa pun di internet mendaftar dan masuk ke aplikasi Anda.
Misalnya, untuk mendaftarkan pengguna di aplikasi Anda, Anda dapat mendistribusikan klien publik OAuth yang tidak menyediakan akses istimewa ke rahasia. Anda dapat mendaftarkan pengguna ini dengan operasi API yang tidak diautentikasi. SignUp
Untuk mengirim permintaan ini di klien publik yang Anda kembangkan dengan AWS SDK, Anda tidak perlu mengonfigurasi kredenSIAL apa pun. Anda juga dapat mengirim permintaan langsung ke titik akhir layanan untuk API kumpulan pengguna Amazon Cognito tanpa otorisasi tambahan.
Jika klien aplikasi Anda memiliki rahasia klien, Anda harus memberikan, tergantung pada operasinya, SecretHash parameter atau SECRET_HASH nilai di dalamnyaAuthParameters. Untuk informasi selengkapnya, lihat Menghitung nilai hash rahasia.
| Operasi pengguna yang tidak diautentikasi |
|---|
| SignUp |
| ConfirmSignUp |
| ResendConfirmationCode |
| ForgotPassword |
| ConfirmForgotPassword |
| InitiateAuth |
Token-authorized operasi pengguna keluar, kelola kredensi untuk, memodifikasi, dan melihat pengguna Anda setelah mereka masuk atau memulai proses masuk. Gunakan operasi API resmi token saat Anda tidak ingin mendistribusikan rahasia di aplikasi, dan Anda ingin mengotorisasi permintaan dengan kredentif pengguna Anda sendiri. Jika pengguna Anda telah menyelesaikan proses masuk, Anda harus mengotorisasi permintaan API resmi token mereka dengan token akses. Jika pengguna Anda sedang dalam proses masuk, Anda harus mengotorisasi permintaan API resmi token mereka dengan token sesi yang dikembalikan Amazon Cognito sebagai tanggapan atas permintaan sebelumnya.
Misalnya, di klien publik, Anda mungkin ingin memperbarui profil pengguna dengan cara yang membatasi akses menulis ke profil pengguna itu sendiri saja. Untuk melakukan pembaruan ini, klien Anda dapat menyertakan token akses pengguna dalam permintaan UpdateUserAttributes API.
Untuk mengirim permintaan ini di klien publik yang Anda kembangkan dengan AWS SDK, Anda tidak perlu mengonfigurasi kredenSIAL apa pun. Sertakan Session parameter AccessToken atau dalam permintaan Anda. Anda juga dapat mengirim permintaan langsung ke titik akhir layanan untuk API kumpulan pengguna Amazon Cognito. Untuk mengotorisasi permintaan ke titik akhir layanan, sertakan token akses atau sesi di badan POST permintaan Anda.
Untuk menandatangani permintaan API untuk operasi otorisasi token, sertakan token akses sebagai Authorization header dalam permintaan Anda, dalam format. Bearer
<Base64-encoded access token>
| Token-authorized operasi pengguna | AccessToken | Sesi |
|---|---|---|
| RespondToAuthChallenge | ✓ | |
| ChangePassword | ✓ | |
| GetUser | ✓ | |
| StartWebAuthnRegistration | ✓ | |
| CompleteWebAuthnRegistration | ✓ | |
| DeleteWebAuthnCredential | ✓ | |
| ListWebAuthnCredentials | ✓ | |
| UpdateUserAttributes | ✓ | |
| DeleteUserAttributes | ✓ | |
| DeleteUser | ✓ | |
| ConfirmDevice | ✓ | |
| ForgetDevice | ✓ | |
| GetDevice | ✓ | |
| ListDevices | ✓ | |
| UpdateDeviceStatus | ✓ | |
| GetUserAttributeVerificationCode | ✓ | |
| VerifyUserAttribute | ✓ | |
| SetUserSettings | ✓ | |
| SetUserMFAPreference | ✓ | |
| GlobalSignOut | ✓ | |
| UpdateAuthEventFeedback | ✓ | |
| AssociateSoftwareToken | ✓ | ✓ |
| VerifySoftwareToken | ✓ | ✓ |
| RevokeToken¹ | ||
| GetTokensFromRefreshToken¹ |
¹ RevokeToken dan GetTokensFromRefreshToken ambil token penyegaran sebagai parameter otorisasi. Token refresh berfungsi sebagai token otorisasi, dan sebagai sumber daya target.