View a markdown version of this page

Inisiasi sesi SAML di kumpulan pengguna Amazon Cognito - Amazon Cognito

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

Inisiasi sesi SAML di kumpulan pengguna Amazon Cognito

Amazon Cognito mendukung sistem masuk tunggal (SSOSP-initiated) dan SSO yang diprakarsai penyedia layanan. IdP-initiated Sebagai praktik keamanan terbaik, terapkan SP-initiated SSO di kumpulan pengguna Anda. Bagian 5.1.2 dari Tinjauan Tek nis SAML V2.0 menjelaskan SP-initiated SSO. Amazon Cognito adalah penyedia identitas (IdP) untuk aplikasi Anda. Aplikasi ini adalah penyedia layanan (SP) yang mengambil token untuk pengguna yang diautentikasi. Namun, ketika Anda menggunakan IdP pihak ketiga untuk mengotentikasi pengguna, Amazon Cognito adalah SP. Saat pengguna SAML 2.0 Anda melakukan otentikasi dengan SP-initiated aliran, mereka harus selalu terlebih dahulu membuat permintaan ke Amazon Cognito dan mengarahkan kembali ke IdP untuk otentikasi.

Untuk beberapa kasus penggunaan perusahaan, akses ke aplikasi internal dimulai dari bookmark di dasbor yang dihosting oleh IdP perusahaan. Ketika pengguna memilih bookmark, IdP menghasilkan respons SAML dan mengirimkannya ke SP untuk mengotentikasi pengguna dengan aplikasi.

Anda dapat mengonfigurasi IdP SAML di kumpulan pengguna Anda untuk mendukung IdP-initiated SSO. Saat Anda mendukung IdP-initiated otentikasi, Amazon Cognito tidak dapat memverifikasi bahwa ia telah meminta respons SAML yang diterimanya karena Amazon Cognito tidak memulai otentikasi dengan permintaan SAML. Di SP-initiated SSO, Amazon Cognito menetapkan parameter status yang memvalidasi respons SAML terhadap permintaan asli. Dengan SP-initiated masuk, Anda juga dapat melindungi dari pemalsuan permintaan lintas situs (CSRF).

Terapkan SP-initated masuk SAML

Sebagai praktik terbaik, terapkan login (SP-initiated) yang diprakarsai penyedia layanan ke kumpulan pengguna Anda. Amazon Cognito memulai sesi pengguna Anda dan mengarahkan mereka ke IdP Anda. Dengan metode ini, Anda memiliki kontrol terbesar atas siapa yang menyajikan permintaan masuk. Anda juga dapat mengiz IdP-initiated inkan masuk dalam kondisi tertentu.

Proses berikut menunjukkan bagaimana pengguna menyelesaikan SP-initiated login ke kumpulan pengguna Anda melalui penyedia SAML.

Diagram alir otentikasi masuk Amazon Cognito SP-initiated SAML.
  1. Pengguna Anda memasukkan alamat email mereka di halaman masuk. Untuk menentukan pengalihan pengguna ke IdP mereka, Anda dapat mengumpulkan alamat email mereka dalam aplikasi yang dibuat khusus atau memanggil login terkelola di tampilan web.

    Anda dapat mengonfigurasi halaman login terkelola untuk menampilkan daftar IdPs atau meminta alamat email dan mencocokkannya dengan pengenal IdP SAML Anda. Untuk meminta alamat email, edit gaya branding login terkelola Anda dan di Foundation, cari Perilaku otentikasi dan di bawah T ampilan Penyedia, setel Gaya tampilan ke input pencarian Domain.

  2. Aplikasi Anda memanggil titik akhir pengalihan kumpulan pengguna dan meminta sesi dengan ID klien yang sesuai dengan aplikasi dan ID IdP yang sesuai dengan pengguna.

  3. Amazon Cognito mengalihkan pengguna Anda ke IdP dengan permintaan SAML, yang ditandatangani secara opsional, dalam elemen. AuthnRequest

  4. IdP mengautentikasi pengguna secara interaktif, atau dengan sesi yang diingat dalam cookie browser.

  5. IdP mengalihkan pengguna Anda ke titik akhir respons SAML kumpulan pengguna Anda dengan pernyataan SAML yang dien kripsi secara opsional di payload POST mereka.

    catatan

    Amazon Cognito membatalkan sesi yang tidak menerima tanggapan dalam waktu 5 menit, dan mengarahkan pengguna ke login terkelola. Ketika pengguna Anda mengalami hasil ini, mereka menerima pesan Something went wrong kesalahan.

  6. Setelah memverifikasi pernyataan SAML dan memetakan atribut pengguna dari klaim dalam respons, Amazon Cognito secara internal membuat atau memperbarui profil pengguna di kumpulan pengguna. Biasanya, kumpulan pengguna mengembalikan kode otorisasi ke sesi browser pengguna Anda.

  7. Pengguna Anda menyajikan kode otorisasi mereka ke aplikasi Anda, yang menukar kode dengan token web JSON (JWT).

  8. Aplikasi Anda menerima dan memproses token ID pengguna Anda sebagai otentikasi, menghasilkan permintaan resmi ke sumber daya dengan token akses mereka, dan menyimpan token penyegaran mereka.

Saat pengguna mengotentikasi dan menerima pemberian kode otorisasi, kumpulan pengguna mengembalikan ID, akses, dan token penyegaran. Token ID adalah objek otentikasi untuk manajemen OIDC-based identitas. Token akses adalah objek otorisasi dengan cakupan OAuth 2.0. Token refresh adalah objek yang menghasilkan ID baru dan token akses ketika token pengguna Anda saat ini telah kedaluwarsa. Anda dapat mengonfigurasi durasi token pengguna di klien aplikasi kumpulan pengguna Anda.

Anda juga dapat memilih durasi token penyegaran. Setelah token penyegaran pengguna kedaluwarsa, mereka harus masuk lagi. Jika mereka diautentikasi melalui IdP SAML, durasi sesi pengguna Anda ditentukan oleh kedaluwarsa token mereka, bukan berakhirnya sesi mereka dengan IdP mereka. Aplikasi Anda harus menyimpan token penyegaran setiap pengguna dan memperbarui sesi mereka saat kedaluwarsa. Login terkelola mempertahankan sesi pengguna dalam cookie browser yang berlaku selama 1 jam.

Terapkan IdP-initiated masuk SAML

Saat mengonfigurasi penyedia identitas untuk masuk IdP-initiated SAML 2.0, Anda dapat menyajikan pernyataan SAML ke saml2/idpresponse titik akhir di domain kumpulan pengguna tanpa perlu memulai sesi di. Otorisasi titik akhir Kumpulan pengguna dengan konfigurasi ini menerima pernyataan IdP-initiated SAML dari penyedia identitas eksternal kumpulan pengguna yang didukung oleh klien aplikasi yang diminta.

Diagram alir otentikasi masuk Amazon Cognito IdP-initiated SAML.
  1. Pengguna meminta masuk SAML dengan aplikasi Anda.

  2. Aplikasi Anda memanggil browser atau mengarahkan pengguna ke halaman masuk untuk penyedia SAML mereka.

  3. IdP mengautentikasi pengguna secara interaktif, atau dengan sesi yang diingat dalam cookie browser.

  4. IdP mengarahkan pengguna Anda ke aplikasi Anda dengan pernyataan SAML, atau respons, di badan POST mereka.

  5. Aplikasi Anda menambahkan pernyataan SAML ke badan POST permintaan ke titik akhir kumpulan saml2/idpresponse pengguna Anda.

  6. Amazon Cognito mengeluarkan kode otorisasi kepada pengguna Anda.

  7. Pengguna Anda menyajikan kode otorisasi mereka ke aplikasi Anda, yang menukar kode dengan token web JSON (JWT).

  8. Aplikasi Anda menerima dan memproses token ID pengguna Anda sebagai otentikasi, menghasilkan permintaan resmi ke sumber daya dengan token akses mereka, dan menyimpan token penyegaran mereka.

Langkah-langkah berikut menjelaskan keseluruhan proses untuk mengonfigurasi dan masuk dengan penyedia IdP-initiated SAML 2.0.

  1. Buat atau tentukan kumpulan pengguna dan klien aplikasi.

  2. Buat SAML 2.0 IdP di kumpulan pengguna Anda.

  3. Konfigurasikan IdP Anda untuk mendukung inisiasi IdP. IdP-initiated SAML memperkenalkan pertimbangan keamanan yang tidak tunduk pada penyedia SSO lain. Karena itu, Anda tidak dapat menambahkan non-SAML IdPs, termasuk kumpulan pengguna itu sendiri, ke klien aplikasi apa pun yang menggunakan penyedia SAML dengan login. IdP-initiated

  4. Kaitkan penyedia IdP-initiated SAML Anda dengan klien aplikasi di kumpulan pengguna Anda.

  5. Arahkan pengguna Anda ke halaman masuk untuk IdP SAML Anda dan ambil pernyataan SAML.

  6. Arahkan pengguna Anda ke titik akhir kumpulan saml2/idpresponse pengguna Anda dengan pernyataan SAML mereka.

  7. Menerima token web JSON (JWT).

Untuk menerima pernyataan SAML yang tidak diminta di kumpulan pengguna, Anda harus mempertimbangkan pengaruhnya terhadap keamanan aplikasi. Permintaan spoofing dan upaya CSRF kemungkinan terjadi ketika Anda menerima permintaan. IdP-initiated Meskipun kumpulan pengguna Anda tidak dapat memverifikasi sesi IdP-initiated masuk, Amazon Cognito memvalidasi parameter permintaan dan pernyataan SAML Anda.

Selain itu, pernyataan SAML Anda tidak boleh berisi InResponseTo klaim dan harus dikeluarkan dalam 6 menit sebelumnya.

Anda harus mengirimkan permintaan dengan IdP-initiated SAML ke Anda/saml2/idpresponse. Untuk SP-initiated dan permintaan otorisasi login yang dikelola, Anda harus memberikan parameter yang mengidentifikasi klien aplikasi yang diminta, cakupan, URI pengalihan, dan detail lainnya sebagai parameter string kueri dalam HTTP GET permintaan. Namun, untuk pernyataan IdP-initiated SAML, detail permintaan Anda harus diformat sebagai RelayState parameter dalam isi permintaan. HTTP POST Badan permintaan juga harus berisi pernyataan SAML Anda sebagai SAMLResponse parameter.

Berikut ini adalah contoh permintaan dan respons untuk penyedia IdP-initiated SAML.

POST /saml2/idpresponse HTTP/1.1 User-Agent: USER_AGENT Accept: */* Host: example.auth.us-east-1.amazoncognito.com Content-Type: application/x-www-form-urlencoded SAMLResponse=[Base64-encoded SAML assertion]&RelayState=identity_provider%3DMySAMLIdP%26client_id%3D1example23456789%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com%26response_type%3Dcode%26scope%3Demail%2Bopenid%2Bphone HTTP/1.1 302 Found Date: Wed, 06 Dec 2023 00:15:29 GMT Content-Length: 0 x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb Location: https://www.example.com?code=[Authorization code]
Konsol Manajemen AWS
Untuk mengkonfigurasi IdP untuk SAML IdP-initiated
  1. Buat kum pulan pengguna, klien aplikasi, dan penyedia identitas SAML.

  2. Putuskan hubungan semua penyedia identitas sosial dan OIDC dari klien aplikasi Anda, jika ada yang terkait.

  3. Arahkan ke menu penyedia sosial dan eksternal dari kumpulan pengguna Anda.

  4. Edit atau tambahkan penyedia SAML.

  5. Di bawah proses masuk IdP-initiated SAML, pilih Terima SP-initiated dan dan pernyataan IdP-initiated SAML.

  6. Pilih Simpan perubahan.

API/CLI

Untuk mengkonfigurasi IdP untuk SAML IdP-initiated

Konfigur IdP-initiated asikan SAML dengan IDPInit parameter dalam permintaan CreateIdentityProvider atau UpdateIdentityProvider API. Berikut ini adalah contoh ProviderDetails IdP yang mendukung IdP-initiated SAML.

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }