Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Ketika Anda memulai dengan otentikasi kumpulan pengguna, Anda harus memutuskan model otorisasi aplikasi Anda. Autentikasi Amazon Cognito biasanya mengharuskan Anda menerapkan dua operasi API secara berurutan. Operasi API yang Anda gunakan untuk otentikasi bergantung pada karakteristik aplikasi Anda. Klien publik, tempat aplikasi didistribusikan ke pengguna, menggunakan otentikasi publik, di mana permintaan untuk masuk tidak memerlukan otorisasi. Klien sisi server, di mana logika aplikasi di-host pada sistem jarak jauh, dapat melindungi operasi otentikasi dengan otorisasi IAM untuk permintaan masuk. Pasangan operasi API berikut dan metode SDK yang sesuai dipetakan ke masing-masing model otorisasi yang tersedia.
Untuk membandingkan autentikasi API dan melihat daftar lengkap operasi API dan model otorisasi mereka, lihat. Memahami API, OIDC, dan otentikasi halaman login terkelola
InitiateAuth
dan tidak RespondToAuthChallenge
diautentikasi APIs untuk digunakan dengan klien aplikasi publik sisi klien. Untuk informasi selengkapnya, silakan lihat Opsi otentikasi sisi klien dan Memahami API, OIDC, dan otentikasi halaman login terkelola.
Pengguna mengautentikasi dengan menjawab tantangan berturut-turut hingga otentikasi gagal atau Amazon Cognito mengeluarkan token kepada pengguna. Anda dapat mengulangi langkah-langkah ini dengan Amazon Cognito, dalam proses yang mencakup berbagai tantangan, untuk mendukung alur otentikasi khusus apa pun.
Topik
Opsi otentikasi sisi server
Aplikasi web dan aplikasi sisi server lainnya menerapkan otentikasi dalam sesi di server jarak jauh, biasanya di browser yang memulai sesi ke server itu. Aplikasi sisi server 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 kredensil.
-
Mereka memanggil login terkelola untuk otentikasi, atau menggunakan operasi yang diotorisasi IAM di API kumpulan pengguna dengan SDK. AWS
-
Mereka melayani pelanggan internal dan dapat melayani pelanggan publik.
Operasi sisi server dengan API kumpulan pengguna dapat menggunakan kata sandi, kata sandi satu kali, atau kunci sandi sebagai faktor masuk utama. Untuk aplikasi sisi server, autentikasi kumpulan pengguna mirip dengan otentikasi untuk aplikasi sisi klien, kecuali yang berikut ini:
-
Aplikasi sisi server membuat permintaan API. AdminInitiateAuth Operasi ini memerlukan AWS kredensional dengan izin yang menyertakan dan.
cognito-idp:AdminInitiateAuth
cognito-idp:AdminRespondToAuthChallenge
Operasi mengembalikan tantangan atau hasil otentikasi yang diperlukan. -
Ketika aplikasi menerima tantangan, itu membuat permintaan AdminRespondToAuthChallengeAPI. Operasi
AdminRespondToAuthChallenge
API juga membutuhkan AWS kredensional.
Untuk informasi selengkapnya tentang penandatanganan permintaan Amazon Cognito API dengan AWS kredensil, lihat proses penandatanganan Versi Tanda Tangan 4 di Referensi Umum.AWS
Dalam AdminInitiateAuth
tanggapanChallengeParameters
, USER_ID_FOR_SRP
atribut, jika ada, berisi nama pengguna aktual pengguna, 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.
Opsi otentikasi sisi klien
Aplikasi seluler dan jenis aplikasi sisi klien lainnya yang diinstal pada perangkat pengguna biasanya memiliki karakteristik berikut.
-
Mereka dibangun dalam bahasa seperti React native, Flutter, dan Swift dan disebarkan 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 kredensil yang akan mengotorisasi permintaan API yang diotorisasi oleh IAM.
-
Mereka memanggil login terkelola untuk otentikasi, atau menggunakan operasi publik dan token yang diotorisasi di API kumpulan pengguna dengan SDK. AWS
-
Mereka melayani pelanggan publik dan mengizinkan siapa saja untuk mendaftar dan masuk.
Operasi sisi klien 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
InitiateAuth
operasi dengan nama pengguna dan detail Secure Remote Password (SRP) pengguna.Operasi API ini mengembalikan parameter otentikasi.
catatan
Aplikasi ini menghasilkan detail SRP dengan fitur Amazon Cognito SRP yang ada di dalamnya. AWS SDKs
-
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
RespondToAuthChallenge
mengembalikan token. Sebaliknya, panggilan mengembalikan sesi. -
Jika
RespondToAuthChallenge
mengembalikan sesi, aplikasi memanggilRespondToAuthChallenge
lagi, 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 ke penyedia identitas eksternal (IdPs). Mereka adalah IdPs untuk aplikasi yang menerapkan otentikasi dengan OpenID Connect ( SDKsOIDC). Mereka menyediakan otentikasi sebagai penerbit token web JSON (JWTs) mirip dengan otentikasi OIDC, tetapi dalam metode API yang merupakan bagian dari. AWS SDKs Mereka juga bisa menjadi titik masuk yang aman ke aplikasi Anda.
Saat Anda ingin mendaftar, masuk, dan mengelola pengguna di kumpulan pengguna, Anda memiliki dua opsi.
-
Halaman login terkelola Anda dan UI yang dihosting klasik mencakup titik akhir interaktif pengguna login terkelola dan titik akhir federasi yang menangani peran IDP dan pihak terkait. Mereka membuat paket halaman web publik yang diaktifkan Amazon Cognito saat Anda memilih domain untuk kumpulan pengguna Anda. Untuk memulai dengan cepat dengan 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.
-
Titik akhir panggilan balik penyedia layanan untuk klaim yang diautentikasi dari Anda, suka, dan. IdPs
saml2/idpresponse
oauth2/idpresponse
Jika Amazon Cognito adalah penyedia layanan perantara (SP) antara aplikasi Anda dan idP Anda, titik akhir callback mewakili layanan. -
Endpoint yang memberikan informasi tentang lingkungan Anda, seperti
oauth2/userInfo
dan/.well-known/jwks.json
. Aplikasi Anda menggunakan endpoint ini saat memverifikasi token atau mengambil data profil pengguna dengan library developer OIDC atau 2.0. OAuth
-
-
API kumpulan pengguna Amazon Cognito adalah seperangkat alat untuk web atau aplikasi seluler Anda untuk mengautentikasi pengguna setelah mengumpulkan informasi masuk di front end kustom Anda sendiri. Autentikasi API kumpulan pengguna menghasilkan token web JSON berikut.
-
Token identitas dengan klaim atribut yang dapat diverifikasi dari pengguna Anda.
-
catatan
Secara default, token akses dari kumpulan pengguna otentikasi API hanya berisi
aws.cognito.signin.user.admin
ruang lingkup. Untuk menghasilkan token akses dengan cakupan tambahan, misalnya untuk mengotorisasi permintaan ke API pihak ketiga, minta cakupan selama autentikasi melalui titik akhir kumpulan pengguna Anda atau tambahkan cakupan khusus di file. 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, dan 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 AdminLinkProviderForUserAPI, mereka dapat masuk dengan API kumpulan pengguna. Untuk informasi selengkapnya, lihat Menautkan pengguna gabungan 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 Anda memilih tombol “Buat akun” yang Anda buat di aplikasi Anda. Mereka memasukkan alamat email dan kata sandi.
-
Aplikasi Anda mengirimkan permintaan SignUpAPI dan membuat pengguna baru di kumpulan pengguna Anda.
-
Aplikasi Anda meminta pengguna Anda untuk kode konfirmasi email. Pengguna Anda memasukkan kode yang mereka terima dalam pesan email.
-
Aplikasi Anda mengirimkan permintaan ConfirmSignUpAPI dengan kode konfirmasi pengguna.
-
Aplikasi Anda meminta pengguna Anda untuk nama pengguna dan kata sandi mereka, dan mereka memasukkan informasi mereka.
-
Aplikasi Anda mengirimkan permintaan InitiateAuthAPI dan menyimpan token ID, token akses, dan token penyegaran. Aplikasi Anda memanggil library OIDC untuk mengelola token pengguna Anda dan mempertahankan sesi persisten untuk pengguna tersebut.
Di API kumpulan pengguna Amazon Cognito, Anda tidak dapat memasukkan pengguna yang melakukan federasi melalui iDP. Anda harus mengautentikasi 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. Ketika permintaan API Anda ke Otorisasi titik akhir menyertakan parameter iDP, Amazon Cognito secara diam-diam mengalihkan pengguna Anda ke halaman login iDP.
Contoh skenario dengan halaman login terkelola
-
Pengguna Anda memilih tombol “Buat akun” yang Anda buat di aplikasi Anda.
-
Login terkelola memberi pengguna Anda daftar penyedia identitas sosial tempat Anda telah mendaftarkan kredensi pengembang. Pengguna Anda memilih Apple.
-
Aplikasi Anda memulai permintaan ke nama
SignInWithApple
penyedia Otorisasi titik akhir with. -
Browser pengguna Anda membuka halaman otentikasi Apple. Pengguna Anda masuk dan memilih untuk mengizinkan 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 dalam 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 library OIDC untuk mengelola token pengguna Anda dan mempertahankan sesi persisten untuk pengguna tersebut.
API kumpulan pengguna dan halaman login terkelola mendukung berbagai skenario, yang dijelaskan di seluruh panduan ini. Bagian berikut memeriksa bagaimana API kumpulan pengguna membagi lebih lanjut ke dalam kelas yang mendukung persyaratan pendaftaran, masuk, dan pengelolaan sumber daya Anda.
Kumpulan pengguna Amazon Cognito operasi API yang diautentikasi dan tidak diautentikasi
API kumpulan pengguna Amazon Cognito, baik antarmuka manajemen sumber daya dan antarmuka otentikasi dan otorisasi yang dihadapi pengguna, menggabungkan model otorisasi yang mengikuti operasinya. Bergantung pada operasi API, Anda mungkin harus memberikan otorisasi dengan kredensil 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 kepada pengguna, seperti aplikasi seluler; Anda tidak perlu menyertakan rahasia apa pun dalam kode Anda.
Anda hanya dapat menetapkan izin dalam kebijakan IAM untuk dan. Operasi manajemen yang diautentikasi oleh IAM Operasi pengguna yang diautentikasi oleh IAM
Operasi manajemen yang diautentikasi oleh IAM memodifikasi dan melihat kumpulan pengguna dan konfigurasi klien aplikasi Anda, seperti yang akan Anda lakukan di. AWS Management Console
Misalnya, untuk memodifikasi kumpulan pengguna dalam permintaan UpdateUserPoolAPI, Anda harus menunjukkan AWS kredensi 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 kredenal IAM ke permintaan Anda. Untuk informasi selengkapnya, lihat Mengakses AWS menggunakan AWS kredensional 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 kredensil yang Anda sematkan di header permintaan Anda. Untuk informasi selengkapnya, lihat Menandatangani permintaan AWS API.
Operasi manajemen yang diautentikasi oleh IAM |
---|
AddCustomAttributes |
CreateGroup |
CreateIdentityProvider |
CreateResourceServer |
CreateUserImportJob |
CreateUserPool |
CreateUserPoolClient |
CreateUserPoolDomain |
DeleteGroup |
DeleteIdentityProvider |
DeleteResourceServer |
DeleteUserPool |
DeleteUserPoolClient |
DeleteUserPoolDomain |
DescribeIdentityProvider |
DescribeResourceServer |
DescribeRiskConfiguration |
DescribeUserImportJob |
DescribeUserPool |
DescribeUserPoolClient |
DescribeUserPoolDomain |
GetCSVHeader |
GetGroup |
GetIdentityProviderByIdentifier |
GetSigningCertificate |
GetUICustomization |
GetUserPoolMfaConfig |
ListGroups |
ListIdentityProviders |
ListResourceServers |
ListTagsForResource |
ListUserImportJobs |
ListUserPoolClients |
ListUserPools |
ListUsers |
ListUsersInGroup |
SetRiskConfiguration |
SetUICustomization |
SetUserPoolMfaConfig |
StartUserImportJob |
StopUserImportJob |
TagResource |
UntagResource |
UpdateGroup |
UpdateIdentityProvider |
UpdateResourceServer |
UpdateUserPool |
UpdateUserPoolClient |
UpdateUserPoolDomain |
Operasi pengguna yang diautentikasi IAM mendaftar, masuk, mengelola kredensi untuk, memodifikasi, dan melihat pengguna Anda.
Misalnya, Anda dapat memiliki tingkat aplikasi sisi server yang mendukung ujung depan web. Aplikasi sisi server Anda adalah klien OAuth rahasia yang Anda percayai dengan akses istimewa ke sumber daya Amazon Cognito Anda. Untuk mendaftarkan pengguna di aplikasi, server Anda dapat menyertakan AWS kredensi dalam permintaan AdminCreateUserAPI. Untuk informasi selengkapnya tentang jenis OAuth klien, 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 kredensi IAM ke permintaan Anda. Untuk informasi selengkapnya, lihat Mengakses AWS menggunakan AWS kredensional 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 kredensil 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 kredensi IAM dan, tergantung pada operasinya, SecretHash
parameter atau nilai dalamSECRET_HASH
. AuthParameters
Untuk informasi selengkapnya, lihat Menghitung nilai hash rahasia.
Operasi pengguna yang diautentikasi oleh IAM |
---|
AdminAddUserToGroup |
AdminConfirmSignUp |
AdminCreateUser |
AdminDeleteUser |
AdminDeleteUserAttributes |
AdminDisableProviderForUser |
AdminDisableUser |
AdminEnableUser |
AdminForgetDevice |
AdminGetDevice |
AdminGetUser |
AdminInitiateAuth |
AdminLinkProviderForUser |
AdminListDevices |
AdminListGroupsForUser |
AdminListUserAuthEvents |
AdminRemoveUserFromGroup |
AdminResetUserPassword |
AdminRespondToAuthChallenge |
AdminSetUserMFAPreference |
AdminSetUserPassword |
AdminSetUserSettings |
AdminUpdateAuthEventFeedback |
AdminUpdateDeviceStatus |
AdminUpdateUserAttributes |
AdminUserGlobalSignOut |
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 dapat mendistribusikan klien OAuth publik yang tidak menyediakan akses istimewa apa pun 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 kredensi 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 dalamAuthParameters
. Untuk informasi selengkapnya, lihat Menghitung nilai hash rahasia.
Operasi pengguna yang tidak diautentikasi |
---|
SignUp |
ConfirmSignUp |
ResendConfirmationCode |
ForgotPassword |
ConfirmForgotPassword |
InitiateAuth |
Operasi pengguna yang diotorisasi token keluar, mengelola kredensi untuk, memodifikasi, dan melihat pengguna Anda setelah mereka masuk atau memulai proses masuk. Gunakan operasi API yang diotorisasi token jika Anda tidak ingin mendistribusikan rahasia di aplikasi, dan Anda ingin mengotorisasi permintaan dengan kredensional pengguna Anda sendiri. Jika pengguna Anda telah menyelesaikan proses masuk, Anda harus mengotorisasi permintaan API resmi token mereka dengan token akses. Jika pengguna Anda berada di tengah proses masuk, Anda harus mengotorisasi permintaan API resmi token mereka dengan token sesi yang dikembalikan Amazon Cognito sebagai respons terhadap permintaan sebelumnya.
Misalnya, di klien publik, Anda mungkin ingin memperbarui profil pengguna dengan cara yang membatasi akses tulis ke profil pengguna sendiri saja. Untuk melakukan pembaruan ini, klien Anda dapat menyertakan token akses pengguna dalam permintaan UpdateUserAttributesAPI.
Untuk mengirim permintaan ini di klien publik yang Anda kembangkan dengan AWS SDK, Anda tidak perlu mengonfigurasi kredensi 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 yang diotorisasi token, sertakan token akses sebagai Authorization
header dalam permintaan Anda, dalam format. Bearer
<Base64-encoded access token>
Operasi pengguna yang diotorisasi token | AccessToken | Sesi |
---|---|---|
RespondToAuthChallenge |
✓ | |
ChangePassword |
✓ | |
GetUser |
✓ | |
UpdateUserAttributes |
✓ | |
DeleteUserAttributes |
✓ | |
DeleteUser |
✓ | |
ConfirmDevice |
✓ | |
ForgetDevice |
✓ | |
GetDevice |
✓ | |
ListDevices |
✓ | |
UpdateDeviceStatus |
✓ | |
GetUserAttributeVerificationCode |
✓ | |
VerifyUserAttribute |
✓ | |
SetUserSettings |
✓ | |
SetUserMFAPreference |
✓ | |
GlobalSignOut |
✓ | |
AssociateSoftwareToken |
✓ | ✓ |
UpdateAuthEventFeedback |
✓ | |
VerifySoftwareToken |
✓ | ✓ |
RevokeToken ¹ |
¹ RevokeToken mengambil token penyegaran sebagai parameter. Token penyegaran berfungsi sebagai token otorisasi, dan sebagai sumber daya target.