SAMLinisiasi sesi 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.

SAMLinisiasi sesi di kumpulan pengguna Amazon Cognito

Amazon Cognito mendukung sistem masuk tunggal () yang dimulai oleh penyedia layanan (SP-initiated) dan IDP-initiated. SSO SSO Sebagai praktik keamanan terbaik, terapkan SP yang dimulai SSO di kumpulan pengguna Anda. Bagian 5.1.2 dari Ikhtisar Teknis SAML V2.0 menjelaskan SP-dimulai. SSO Amazon Cognito adalah penyedia identitas (iDP) ke aplikasi Anda. Aplikasi ini adalah penyedia layanan (SP) yang mengambil token untuk pengguna yang diautentikasi. Namun, ketika Anda menggunakan IDP pihak ketiga untuk mengautentikasi pengguna, Amazon Cognito adalah SP. Saat pengguna SAML 2.0 Anda mengautentikasi dengan alur yang dimulai SP, mereka harus selalu membuat permintaan terlebih dahulu ke Amazon Cognito dan mengarahkan ulang ke IDP untuk autentikasi.

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 SAML respons dan mengirimkannya ke SP untuk mengautentikasi pengguna dengan aplikasi.

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

Menggunakan login SAML SP-initated

Sebagai praktik terbaik, terapkan login service-provider-initiated (dimulai SP) ke kumpulan pengguna Anda. Amazon Cognito memulai sesi pengguna Anda dan mengarahkannya ke IDP Anda. Dengan metode ini, Anda memiliki kendali terbesar atas siapa yang menyajikan permintaan masuk. Anda juga dapat mengizinkan login yang diprakarsai IDP dalam kondisi tertentu.

Proses berikut menunjukkan cara pengguna menyelesaikan login yang dimulai SP ke kumpulan pengguna Anda melalui penyedia. SAML

Diagram alir otentikasi dari proses masuk yang diprakarsai Amazon Cognito SPSAML.
  1. Pengguna Anda memasukkan alamat email mereka di halaman login. Untuk menentukan pengalihan pengguna ke IDP mereka, Anda dapat mengumpulkan alamat email mereka di aplikasi khusus atau memanggil UI yang dihosting dalam tampilan web. Anda dapat mengonfigurasi UI yang dihosting untuk menampilkan daftar IdPs atau hanya meminta alamat email.

  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 SAML permintaan, ditandatangani secara opsional, dalam elemen. AuthnRequest

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

  5. IDP mengarahkan pengguna Anda ke titik akhir SAML respons kumpulan pengguna Anda dengan pernyataan yang dienkripsi secara SAMLopsional di payloadnya. POST

    catatan

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

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

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

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

Saat pengguna mengautentikasi dan menerima hibah kode otorisasi, kumpulan pengguna mengembalikan ID, akses, dan token penyegaran. Token ID adalah objek otentikasi untuk manajemen identitas OIDC berbasis. Token akses adalah objek otorisasi dengan cakupan OAuth2.0. Token penyegaran adalah objek yang menghasilkan ID baru dan token akses saat 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 SAML iDP, durasi sesi pengguna Anda ditetapkan oleh kedaluwarsa token mereka, bukan kedaluwarsa sesi mereka dengan IDP mereka. Aplikasi Anda harus menyimpan token penyegaran setiap pengguna dan memperbarui sesi mereka saat kedaluwarsa. UI yang dihosting mempertahankan sesi pengguna dalam cookie browser yang berlaku selama 1 jam.

Menggunakan login yang diprakarsai IDP SAML

Saat mengonfigurasi penyedia identitas untuk login SAML 2.0 yang dimulai IDP, Anda dapat menampilkan SAML pernyataan ke saml2/idpresponse titik akhir di domain kumpulan pengguna Anda tanpa perlu memulai sesi di. Otorisasi titik akhir Kumpulan pengguna dengan konfigurasi ini menerima SAML pernyataan yang diprakarsai IDP dari penyedia identitas eksternal kumpulan pengguna yang didukung oleh klien aplikasi yang diminta. Langkah-langkah berikut menjelaskan keseluruhan proses untuk mengonfigurasi dan masuk dengan penyedia 2.0 yang diprakarsai IDPSAML.

  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 dikenakan oleh SSO penyedia lain. Karena itu, Anda tidak dapat menambahkan non- SAML IdPs, termasuk kumpulan pengguna itu sendiri, ke klien aplikasi apa pun yang menggunakan SAML penyedia dengan login yang diprakarsai IDP.

  4. Kaitkan SAML penyedia yang diprakarsai IDP Anda dengan klien aplikasi di kumpulan pengguna Anda.

  5. Arahkan pengguna Anda ke halaman login untuk SAML IDP Anda dan ambil SAML pernyataan.

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

  7. Menerima token JSON web (JWTs).

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

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

Anda harus mengirimkan permintaan dengan IDP yang diprakarsai SAML ke Anda. /saml2/idpresponse Untuk permintaan otorisasi UI yang diprakarsai SP dan dihosting, Anda harus menyediakan parameter yang mengidentifikasi klien aplikasi yang diminta, cakupan, pengalihanURI, dan detail lainnya sebagai parameter string kueri dalam permintaan. HTTP GET Namun, untuk SAML pernyataan yang diprakarsai IDP, detail permintaan Anda harus diformat sebagai RelayState parameter di badan permintaan. HTTP POST Badan permintaan juga harus berisi SAML pernyataan Anda sebagai SAMLResponse parameter.

Berikut ini adalah contoh permintaan untuk penyedia yang diprakarsai IDPSAML.

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]
AWS Management Console
Untuk mengkonfigurasi IDP untuk IDP yang diprakarsai SAML
  1. Buat kumpulan pengguna, klien aplikasi, dan penyedia SAML identitas.

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

  3. Arahkan ke tab Pengalaman masuk di kumpulan pengguna Anda.

  4. Di bawah login penyedia identitas Federasi, edit atau tambahkan penyedia. SAML

  5. Di bawah SAMLlogin yang diprakarsai IDP, pilih Terima pernyataan yang diprakarsai SP dan dan IDP. SAML

  6. Pilih Simpan perubahan.

API/CLI

Untuk mengkonfigurasi IDP untuk IDP yang diprakarsai SAML

Konfigurasikan IDP yang dimulai SAML dengan IDPInit parameter dalam permintaan atau CreateIdentityProvider. UpdateIdentityProviderAPI Berikut ini adalah contoh ProviderDetails dari IDP yang mendukung IDP dimulai. SAML

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