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
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
-
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.
-
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.
-
Amazon Cognito mengalihkan pengguna Anda ke iDP dengan SAML permintaan, ditandatangani secara opsional, dalam elemen.
AuthnRequest
-
IDP mengautentikasi pengguna secara interaktif, atau dengan sesi yang diingat dalam cookie browser.
-
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. -
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.
-
Pengguna Anda menampilkan kode otorisasi mereka ke aplikasi Anda, yang menukar kode dengan token JSON web (JWTs).
-
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
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.
-
Buat atau tentukan kumpulan pengguna dan klien aplikasi.
-
Buat SAML 2.0 iDP di kumpulan pengguna Anda.
-
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.
-
Kaitkan SAML penyedia yang diprakarsai IDP Anda dengan klien aplikasi di kumpulan pengguna Anda.
-
Arahkan pengguna Anda ke halaman login untuk SAML IDP Anda dan ambil SAML pernyataan.
-
Arahkan pengguna Anda ke
saml2/idpresponse
titik akhir kumpulan pengguna Anda dengan SAML pernyataan mereka. -
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]