Pengaturan khusus aplikasi dengan klien aplikasi - Amazon Cognito

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

Pengaturan khusus aplikasi dengan klien aplikasi

Klien aplikasi kumpulan pengguna adalah konfigurasi dalam kumpulan pengguna yang berinteraksi dengan satu aplikasi seluler atau web yang mengautentikasi dengan Amazon Cognito. Klien aplikasi dapat memanggil API operasi yang diautentikasi dan tidak diautentikasi, dan membaca atau memodifikasi beberapa atau semua atribut pengguna Anda. Aplikasi Anda harus mengidentifikasi dirinya ke klien aplikasi dalam operasi untuk mendaftar, masuk, dan menangani kata sandi yang terlupakan. APIPermintaan ini harus menyertakan identifikasi diri dengan ID klien aplikasi, dan otorisasi dengan rahasia klien opsional. Anda harus mengamankan klien aplikasi IDs atau rahasia apa pun sehingga hanya aplikasi klien resmi yang dapat memanggil operasi yang tidak diautentikasi ini. Selain itu, jika mengonfigurasi aplikasi untuk menandatangani API permintaan yang diautentikasi dengan AWS kredensional, Anda harus mengamankan kredensialnya terhadap pemeriksaan pengguna.

Anda dapat membuat beberapa aplikasi untuk sebuah kolam pengguna. Klien aplikasi mungkin ditautkan ke platform kode aplikasi, atau penyewa terpisah di kumpulan pengguna Anda. Misalnya, Anda dapat membuat aplikasi untuk aplikasi sisi server dan aplikasi Android yang berbeda. Setiap aplikasi memiliki ID klien aplikasi sendiri.

Anda dapat menerapkan pengaturan untuk fitur kumpulan pengguna berikut di tingkat klien aplikasi:

Jenis klien aplikasi

Saat membuat klien aplikasi di Amazon Cognito, Anda dapat mengisi opsi terlebih dahulu berdasarkan jenis OAuth klien standar klien publik dan klien rahasia. Konfigurasikan klien rahasia dengan rahasia klien. Untuk informasi selengkapnya tentang tipe klien, lihat IETFRFC6749 #2 .1.

Klien publik

Klien publik berjalan di browser atau di perangkat seluler. Karena tidak memiliki sumber daya sisi server tepercaya, ia tidak memiliki rahasia klien.

Klien rahasia

Klien rahasia memiliki sumber daya sisi server yang dapat dipercaya dengan rahasia klien untuk operasi yang tidak diautentikasi. API Aplikasi ini mungkin berjalan sebagai skrip daemon atau shell di server backend Anda.

Rahasia klien

Rahasia klien, atau kata sandi klien, adalah string tetap yang harus digunakan aplikasi Anda di semua API permintaan ke klien aplikasi. Klien aplikasi Anda harus memiliki rahasia klien untuk melakukan client_credentials hibah. Untuk informasi lebih lanjut, lihat IETFRFC6749 #2 .3.1.

Anda tidak dapat mengubah rahasia setelah membuat aplikasi. Anda dapat membuat aplikasi baru dengan rahasia baru jika Anda ingin memutar rahasia. Anda juga dapat menghapus aplikasi untuk memblokir akses dari aplikasi yang menggunakan ID klien aplikasi tersebut.

Anda dapat menggunakan klien rahasia, dan rahasia klien, dengan aplikasi publik. Gunakan CloudFront proxy Amazon untuk menambahkan SECRET_HASH dalam perjalanan. Untuk informasi selengkapnya, lihat Melindungi klien publik untuk Amazon Cognito dengan menggunakan CloudFront proxy Amazon di AWS blog.

JSONtoken web

Klien aplikasi Amazon Cognito dapat mengeluarkan token JSON web (JWTs) dari jenis berikut.

Token identitas (ID)

Pernyataan yang dapat diverifikasi bahwa pengguna Anda diautentikasi dari kumpulan pengguna Anda. OpenID Connect (OIDC) menambahkan spesifikasi token ID ke standar akses dan penyegaran token yang ditentukan oleh OAuth 2.0. Token ID berisi informasi identitas, seperti atribut pengguna, yang dapat digunakan aplikasi Anda untuk membuat profil pengguna dan sumber daya penyediaan. Untuk informasi selengkapnya, lihat Memahami token identitas (ID).

Token akses

Pernyataan hak akses pengguna Anda yang dapat diverifikasi. Token akses berisi cakupan, fitur OIDC dan OAuth 2.0. Aplikasi Anda dapat menampilkan cakupan ke sumber daya back-end dan membuktikan bahwa kumpulan pengguna Anda mengizinkan pengguna atau mesin untuk mengakses data dariAPI, atau data pengguna mereka sendiri. Token akses dengan cakupan kustom, seringkali dari hibah kredensial-klien M2M, mengotorisasi akses ke server sumber daya. Untuk informasi selengkapnya, lihat Memahami token akses.

Token refresh

Pernyataan otentikasi awal terenkripsi yang dapat ditampilkan aplikasi Anda ke kumpulan pengguna Anda saat token pengguna Anda kedaluwarsa. Permintaan refresh token mengembalikan akses baru dan token ID yang belum kedaluwarsa. Untuk informasi selengkapnya, lihat Memahami token penyegaran.

Anda dapat mengatur kedaluwarsa token ini untuk setiap klien aplikasi dari tab Integrasi aplikasi kumpulan pengguna Anda di konsol Amazon Cognito.

Ketentuan klien aplikasi

Istilah berikut adalah properti klien aplikasi yang tersedia di konsol Amazon Cognito.

Panggilan balik yang diizinkan URLs

Callback URL menunjukkan tempat pengguna akan dialihkan setelah login berhasil. Pilih setidaknya satu callbackURL. Callback URL harus:

  • Jadilah yang absolutURI.

  • Sudah terdaftar pada klien.

  • Tidak termasuk komponen fragmen.

Lihat OAuth2.0 - titik akhir pengalihan.

Amazon Cognito membutuhkan HTTPS di atas HTTP kecuali http://localhost untuk tujuan pengujian saja.

Panggilan balik aplikasi URLs seperti myapp://example juga didukung.

Diizinkan keluar URLs

Keluar URL menunjukkan ke mana pengguna Anda akan dialihkan setelah keluar.

Atribut izin baca dan tulis

Kumpulan pengguna Anda mungkin memiliki banyak pelanggan, masing-masing dengan klien aplikasi mereka sendiri dan IdPs. Anda dapat mengonfigurasi klien aplikasi agar memiliki akses baca dan tulis hanya ke atribut pengguna yang relevan dengan aplikasi. Dalam kasus seperti otorisasi machine-to-machine (M2M), Anda tidak dapat memberikan akses ke atribut pengguna Anda.

Pertimbangan untuk konfigurasi izin baca dan tulis atribut
  • Saat Anda membuat klien aplikasi dan tidak menyesuaikan izin baca dan tulis atribut, Amazon Cognito memberikan izin baca dan tulis ke semua atribut kumpulan pengguna.

  • Anda dapat memberikan akses tulis ke atribut kustom yang tidak dapat diubah. Klien aplikasi Anda dapat menulis nilai ke atribut yang tidak dapat diubah saat Anda membuat atau mendaftarkan pengguna. Setelah ini, Anda tidak dapat menulis nilai ke atribut kustom yang tidak dapat diubah untuk pengguna.

  • Klien aplikasi harus memiliki akses tulis ke atribut yang diperlukan di kumpulan pengguna Anda. Konsol Amazon Cognito secara otomatis menetapkan atribut yang diperlukan sebagai dapat ditulis.

  • Anda tidak dapat mengizinkan klien aplikasi untuk memiliki akses tulis ke email_verified atauphone_number_verified. Administrator kumpulan pengguna dapat memodifikasi nilai-nilai ini. Seorang pengguna hanya dapat mengubah nilai atribut ini melalui verifikasi atribut.

Alur otentikasi

Metode yang memungkinkan klien aplikasi Anda untuk login. Aplikasi Anda dapat mendukung otentikasi dengan nama pengguna dan kata sandi, Secure Remote Password (SRP), autentikasi khusus dengan pemicu Lambda, dan penyegaran token. Sebagai praktik keamanan terbaik, gunakan SRP otentikasi sebagai metode masuk utama Anda. UI yang dihosting secara otomatis menandatangani pengguna denganSRP.

Lingkup kustom

Cakupan kustom adalah salah satu yang Anda tetapkan untuk server sumber daya Anda sendiri di Server Sumber Daya. Formatnya adalah resource-server-identifier/scope. LihatCakupan, M2M, dan APIs dengan server sumber daya.

Pengalihan default URI

Mengganti redirect_uri parameter dalam permintaan otentikasi untuk pengguna dengan pihak ketiga. IdPs Konfigurasikan pengaturan klien aplikasi ini dengan DefaultRedirectURI parameter UpdateUserPoolClientAPIpermintaan CreateUserPoolClientatau. Ini juga URL harus menjadi anggota CallbackURLs untuk klien aplikasi Anda. Amazon Cognito mengalihkan sesi yang diautentikasi ke ini saat: URL

  1. Klien aplikasi Anda memiliki satu penyedia identitas yang ditetapkan dan beberapa panggilan balik yang URLs ditentukan. Kumpulan pengguna Anda mengalihkan permintaan otentikasi ke server otorisasi ke pengalihan default URI jika tidak menyertakan parameter. redirect_uri

  2. Klien aplikasi Anda memiliki satu penyedia identitas yang ditetapkan dan satu callback URLs ditentukan. Dalam skenario ini, tidak perlu mendefinisikan callback URL default. Permintaan yang tidak menyertakan pengalihan redirect_uri parameter ke callback URL yang tersedia.

Penyedia Identitas

Anda dapat memilih beberapa atau semua penyedia identitas eksternal kumpulan pengguna (IdPs) untuk mengautentikasi pengguna Anda. Klien aplikasi Anda juga dapat mengautentikasi hanya pengguna lokal di kumpulan pengguna Anda. Saat menambahkan iDP ke klien aplikasi, Anda dapat membuat tautan otorisasi ke iDP dan menampilkannya di halaman login UI yang dihosting. Anda dapat menetapkan beberapa IdPs, tetapi Anda harus menetapkan setidaknya satu. Untuk informasi selengkapnya tentang penggunaan eksternal IdPs, lihatMenambahkan login kumpulan pengguna melalui pihak ketiga.

Lingkup OpenID Connect

Pilih salah satu atau beberapa cakupan OAuth berikut untuk menentukan hak akses yang dapat diminta untuk token akses.

  • openidCakupan menyatakan bahwa Anda ingin mengambil token ID dan ID unik pengguna. Ini juga meminta semua atau beberapa atribut pengguna, tergantung pada cakupan tambahan dalam permintaan. Amazon Cognito tidak mengembalikan token ID kecuali Anda meminta cakupannya. openid openidCakupan mengotorisasi klaim token ID struktural seperti kedaluwarsa dan ID kunci, dan menentukan atribut pengguna yang Anda terima sebagai respons dari. userInfo titik akhir

    • openidKapan satu-satunya cakupan yang Anda minta, Amazon Cognito mengisi token ID dengan semua atribut pengguna yang dapat dibaca oleh klien aplikasi saat ini. userInfoRespons terhadap token akses dengan cakupan ini saja mengembalikan semua atribut pengguna.

    • Ketika Anda meminta openid dengan cakupan lain seperti phoneemail,, atauprofile, token ID dan userInfo mengembalikan ID unik pengguna dan atribut yang ditentukan oleh cakupan tambahan.

  • Cakupan phone memberikan akses ke phone_number dan klaim phone_number_verified. Cakupan ini hanya dapat diminta dengan cakupan openid.

  • Cakupan email memberikan akses ke email dan klaim email_verified. Cakupan ini hanya dapat diminta dengan cakupan openid.

  • Ruang aws.cognito.signin.user.admin lingkup memberikan akses ke operasi APIkumpulan pengguna Amazon Cognito yang memerlukan token akses, seperti UpdateUserAttributesdan. VerifyUserAttribute

  • Cakupan profile memberikan akses ke semua atribut pengguna yang dapat dibaca oleh klien. Cakupan ini hanya dapat diminta dengan cakupan openid.

Untuk informasi selengkapnya tentang cakupan, lihat daftar OIDCcakupan standar.

OAuthjenis hibah

OAuthHibah adalah metode otentikasi yang mengambil token kumpulan pengguna. Amazon Cognito mendukung jenis hibah berikut. Untuk mengintegrasikan OAuth hibah ini di aplikasi, Anda harus menambahkan domain ke kumpulan pengguna.

Pemberian kode otorisasi

Pemberian kode otorisasi menghasilkan kode yang dapat ditukarkan oleh aplikasi Anda dengan token kumpulan pengguna dengan. Titik akhir token Saat Anda menukar kode otorisasi, aplikasi Anda akan menerima ID, akses, dan token penyegaran. OAuthAlur ini, seperti hibah implisit, terjadi di browser pengguna Anda. Pemberian kode otorisasi adalah hibah paling aman yang ditawarkan Amazon Cognito, karena token tidak terlihat di sesi pengguna Anda. Sebagai gantinya, aplikasi Anda menghasilkan permintaan yang mengembalikan token dan dapat menyimpannya di penyimpanan yang dilindungi. Untuk informasi selengkapnya, lihat Kode otorisasi di IETFRFC6749 #1 .3.1

catatan

Sebagai praktik keamanan terbaik di aplikasi klien publik, aktifkan hanya OAuth alur hibah kode otorisasi, dan terapkan Kunci Bukti untuk Pertukaran Kode (PKCE) untuk membatasi pertukaran token. DenganPKCE, klien hanya dapat bertukar kode otorisasi ketika mereka telah memberikan titik akhir token dengan rahasia yang sama yang disajikan dalam permintaan otentikasi asli. Untuk informasi lebih lanjut tentangPKCE, lihat IETFRFC7636.

Hibah implisit

Hibah implisit memberikan akses dan token ID, tetapi bukan token penyegaran, ke sesi browser pengguna Anda langsung dari. Otorisasi titik akhir Hibah implisit menghapus persyaratan untuk permintaan terpisah ke titik akhir token, tetapi tidak kompatibel dengan PKCE dan tidak mengembalikan token penyegaran. Hibah ini mengakomodasi skenario pengujian dan arsitektur aplikasi yang tidak dapat menyelesaikan hibah kode otorisasi. Untuk informasi selengkapnya, lihat Hibah implisit di IETFRFC6749 #1 .3.2. Anda dapat mengaktifkan hibah kode otorisasi dan hibah implisit di klien aplikasi, lalu menggunakan setiap hibah sesuai kebutuhan.

Pemberian kredensi klien

Hibah kredensi klien adalah untuk komunikasi machine-to-machine (M2M). Kode otorisasi dan implisit memberikan token penerbitan kepada pengguna manusia yang diautentikasi. Kredensi klien memberikan otorisasi berbasis cakupan dari sistem non-interaktif ke sistem. API Aplikasi Anda dapat meminta kredensi klien langsung dari titik akhir token dan menerima token akses. Untuk informasi selengkapnya, lihat Client Client Client di IETFRFC6749 #1 .3.4. Anda hanya dapat mengaktifkan hibah kredensial-klien di klien aplikasi yang memiliki rahasia klien dan yang tidak mendukung kode otorisasi atau hibah implisit.

catatan

Karena Anda tidak memanggil alur kredensi klien sebagai pengguna, hibah ini hanya dapat menambahkan cakupan khusus untuk mengakses token. Cakupan kustom adalah salah satu yang Anda tetapkan untuk server sumber daya Anda sendiri. Cakupan default menyukai openid dan profile tidak berlaku untuk pengguna bukan manusia.

Karena token ID adalah validasi atribut pengguna, token tersebut tidak relevan dengan komunikasi M2M, dan pemberian kredensi klien tidak menerbitkannya. Lihat Cakupan, M2M, dan APIs dengan server sumber daya.

Hibah kredensi klien menambah biaya ke tagihan Anda. AWS Untuk informasi selengkapnya, lihat Harga Amazon Cognito.

Membuat klien aplikasi

AWS Management Console
Untuk membuat klien aplikasi (konsol)
  1. Masuk ke Konsol Amazon Cognito. Jika diminta, masukkan AWS kredensional Anda.

  2. Pilih Kolam Pengguna.

  3. Pilih kolam pengguna yang ada dari daftar, atau buat kolam pengguna.

  4. Pilih tab Integrasi aplikasi.

  5. Di bawah Klien aplikasi, pilih Buat klien aplikasi.

  6. Pilih jenis Aplikasi: Klien publik, Klien Rahasia, atau Lainnya.

  7. Masukkan nama klien Aplikasi.

  8. Pilih Hasilkan rahasia klien agar Amazon Cognito menghasilkan rahasia klien untuk Anda. Rahasia klien biasanya dikaitkan dengan klien rahasia.

  9. Pilih alur Autentikasi yang ingin Anda izinkan di klien aplikasi Anda.

  10. Konfigurasikan durasi sesi alur Otentikasi. Ini adalah jumlah waktu yang dimiliki pengguna Anda untuk menyelesaikan setiap tantangan otentikasi sebelum token sesi mereka kedaluwarsa.

  11. (Opsional) Jika Anda ingin mengonfigurasi kedaluwarsa token, selesaikan langkah-langkah berikut:

    1. Tentukan kedaluwarsa token Refresh untuk klien aplikasi. Nilai default-nya adalah 30 hari. Anda dapat mengubahnya ke nilai berapa pun antara 1 jam dan 10 tahun.

    2. Tentukan kedaluwarsa token Access untuk klien aplikasi. Nilai default adalah 1 jam. Anda dapat mengubahnya ke nilai berapa pun antara 5 menit dan 24 jam.

    3. Tentukan kedaluwarsa token ID untuk klien aplikasi. Nilai default adalah 1 jam. Anda dapat mengubahnya ke nilai berapa pun antara 5 menit dan 24 jam.

      penting

      Jika Anda menggunakan UI yang dihosting dan mengonfigurasi masa pakai token kurang dari satu jam, pengguna Anda akan dapat menggunakan token berdasarkan durasi cookie sesi mereka, yang saat ini diperbaiki pada satu jam.

  12. Pilih apakah Anda akan Aktifkan pencabutan token untuk klien aplikasi ini. Ini akan meningkatkan ukuran token yang dikeluarkan Amazon Cognito.

  13. Pilih apakah Anda akan Mencegah kesalahan keberadaan pengguna untuk klien aplikasi ini. Amazon Cognito akan menanggapi permintaan masuk untuk pengguna yang tidak ada dengan pesan umum yang menyatakan bahwa nama pengguna atau kata sandi salah.

  14. Jika Anda ingin menggunakan UI yang dihosting dengan klien aplikasi ini, konfigurasikan pengaturan UI yang Dihosting.

    1. Masukkan satu atau lebih callback URLs yang Diizinkan. Ini adalah web atau aplikasi URLs tempat Anda ingin Amazon Cognito mengarahkan pengguna Anda setelah mereka menyelesaikan otentikasi.

    2. Masukkan satu atau lebih Login-out yang URLs diizinkan. Ini adalah URLs bahwa Anda ingin aplikasi Anda menerima permintaan keTitik akhir logout.

    3. Pilih satu atau beberapa penyedia Identitas yang Anda inginkan agar dapat masuk pengguna untuk aplikasi Anda. Anda dapat memilih kombinasi apa pun yang ada IdPs. Anda dapat mengautentikasi pengguna dengan kumpulan pengguna Anda sendiri, atau dengan satu atau beberapa pihak ketiga IdPs yang Anda konfigurasikan di kumpulan pengguna Anda.

    4. Pilih jenis hibah OAuth 2.0 yang Anda inginkan untuk diterima oleh klien aplikasi Anda.

      • Pilih Pemberian kode otorisasi untuk meneruskan kode ke aplikasi Anda yang dapat ditukarkan dengan token dengan. Titik akhir token

      • Pilih Implicit grant untuk meneruskan ID dan mengakses token langsung ke aplikasi Anda. Alur hibah implisit mengekspos token langsung ke pengguna Anda.

      • Pilih kredensi Klien untuk meneruskan token akses ke aplikasi Anda berdasarkan pengetahuannya bukan tentang kredensi pengguna, tetapi rahasia klien. Alur hibah kredensi klien saling eksklusif dengan kode otorisasi dan aliran hibah implisit.

    5. Pilih cakupan OpenID Connect yang ingin Anda otorisasi untuk digunakan dengan klien aplikasi Anda. Anda dapat menghasilkan token akses hanya dengan aws.cognito.signin.user.admin cakupan melalui kumpulan penggunaAPI. Untuk cakupan tambahan, Anda harus meminta token akses Anda dari. Titik akhir token

    6. Pilih cakupan Kustom yang ingin Anda otorisasi dengan klien aplikasi Anda. Cakupan khusus paling sering digunakan untuk mengotorisasi akses ke pihak ketiga. APIs

  15. Konfigurasikan izin baca dan tulis Atribut untuk klien aplikasi ini. Klien aplikasi Anda dapat memiliki izin untuk membaca dan menulis semua, atau subset terbatas, skema atribut kumpulan pengguna Anda.

  16. Pilih Buat klien aplikasi.

  17. Perhatikan id Klien. Ini akan mengidentifikasi klien aplikasi dalam permintaan pendaftaran dan masuk.

AWS CLI
aws cognito-idp create-user-pool-client --user-pool-id MyUserPoolID --client-name myApp
catatan

Gunakan JSON format untuk callback dan logout URLs untuk mencegah agar tidak memperlakukannya sebagai file parameter jarak jauh: CLI

--callback-urls "["https://example.com"]" --logout-urls "["https://example.com"]"

Lihat referensi AWS CLI perintah untuk informasi lebih lanjut: create-user-pool-client

Amazon Cognito user pools API

Hasilkan CreateUserPoolClientAPIpermintaan. Anda harus menentukan nilai untuk semua parameter yang tidak ingin disetel ke nilai default.

Memperbarui klien aplikasi kumpulan pengguna (AWS CLI dan AWS API)

Di AWS CLI, masukkan perintah berikut:

aws cognito-idp update-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"

Jika perintah berhasil, AWS CLI mengembalikan konfirmasi:

{ "UserPoolClient": { "ClientId": "MyClientID", "SupportedIdentityProviders": [ "LoginWithAmazon", "MySAMLIdP" ], "CallbackURLs": [ "https://example.com" ], "AllowedOAuthScopes": [ "openid" ], "ClientName": "Example", "AllowedOAuthFlows": [ "implicit", "code" ], "RefreshTokenValidity": 30, "AuthSessionValidity": 3, "CreationDate": 1524628110.29, "AllowedOAuthFlowsUserPoolClient": true, "UserPoolId": "MyUserPoolID", "LastModifiedDate": 1530055177.553 } }

Lihat referensi AWS CLI perintah untuk informasi lebih lanjut: update-user-pool-client.

AWS API: UpdateUserPoolClient

Mendapatkan informasi tentang klien aplikasi kumpulan pengguna (AWS CLI dan AWS API)

aws cognito-idp describe-user-pool-client --user-pool-id MyUserPoolID --client-id MyClientID

Lihat referensi AWS CLI perintah untuk informasi lebih lanjut: describe-user-pool-client.

AWS API: DescribeUserPoolClient

Mencantumkan semua informasi klien aplikasi di kumpulan pengguna (AWS CLI dan AWS API)

aws cognito-idp list-user-pool-clients --user-pool-id "MyUserPoolID" --max-results 3

Lihat referensi AWS CLI perintah untuk informasi lebih lanjut: list-user-pool-clients.

AWS API: ListUserPoolClients

Menghapus klien aplikasi kumpulan pengguna (AWS CLI dan AWS API)

aws cognito-idp delete-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID"

Lihat referensi AWS CLI perintah untuk informasi lebih lanjut: delete-user-pool-client

AWS API: DeleteUserPoolClient