Hal-hal yang perlu diketahui SAML IdPs 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.

Hal-hal yang perlu diketahui SAML IdPs di kumpulan pengguna Amazon Cognito

Implementasi SAML 2.0 iDP dilengkapi dengan beberapa persyaratan dan batasan. Lihat bagian ini saat Anda menerapkan IDP Anda. Anda juga akan menemukan informasi yang berguna untuk pemecahan masalah kesalahan selama SAML federasi dengan kumpulan pengguna.

Amazon Cognito memproses SAML pernyataan untuk Anda

Kumpulan pengguna Amazon Cognito mendukung federasi SAML 2.0 dengan titik akhir POST yang mengikat. Ini menghilangkan kebutuhan aplikasi Anda untuk mengambil atau mengurai respons SAML pernyataan, karena kumpulan pengguna langsung menerima respons SAML dari IDP Anda melalui agen pengguna. Kolam pengguna Anda bertindak sebagai penyedia layanan (SP) atas nama aplikasi Anda. Amazon Cognito mendukung sistem masuk tunggal (SSO) yang diprakarsai oleh SP dan IDP seperti yang dijelaskan di bagian 5.1.2 dan 5.1.4 dari Tinjauan Teknis V2.0. SAML

Memberikan sertifikat penandatanganan IDP yang valid

Sertifikat penandatanganan di metadata SAML penyedia Anda tidak boleh kedaluwarsa saat Anda mengonfigurasi iDP di SAML kumpulan pengguna.

Kumpulan pengguna mendukung beberapa sertifikat penandatanganan

Jika SAML IDP Anda menyertakan lebih dari satu sertifikat penandatanganan dalam SAML metadata, saat login, kumpulan pengguna Anda menentukan bahwa SAML pernyataan tersebut valid jika cocok dengan sertifikat apa pun dalam metadata. SAML Setiap sertifikat penandatanganan harus tidak lebih dari 4.096 karakter panjangnya.

Pertahankan parameter status relai

Amazon Cognito dan SAML IDP Anda menyimpan informasi sesi dengan parameter. relayState

  1. Amazon Cognito mendukung relayState nilai yang lebih besar dari 80 byte. Sementara SAML spesifikasi menyatakan bahwa relayState nilai “tidak boleh melebihi 80 byte panjangnya”, praktik industri saat ini sering menyimpang dari perilaku ini. Akibatnya, menolak relayState nilai yang lebih besar dari 80 byte akan merusak banyak integrasi SAML penyedia standar.

  2. relayStateToken adalah referensi buram untuk informasi negara yang dikelola oleh Amazon Cognito. Amazon Cognito tidak menjamin konten parameter. relayState Jangan mengurai kontennya sehingga aplikasi Anda bergantung pada hasilnya. Untuk informasi lebih lanjut, lihat spesifikasi SAML 2.0.

Identifikasi titik ACS akhir

Penyedia SAML identitas Anda mengharuskan Anda menetapkan titik akhir konsumen pernyataan. IDP Anda mengarahkan pengguna Anda ke titik akhir ini dengan pernyataan mereka. SAML Konfigurasikan titik akhir berikut di domain kumpulan pengguna Anda untuk POST pengikatan SAML 2.0 di penyedia SAML identitas Anda.

https://Your user pool domain/saml2/idpresponse With an Amazon Cognito domain: https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse With a custom domain: https://auth.example.com/saml2/idpresponse

Lihat Mengkonfigurasi domain kumpulan pengguna untuk informasi selengkapnya tentang domain kumpulan pengguna.

Tidak ada pernyataan yang diputar ulang

Anda tidak dapat mengulangi, atau memutar ulang, SAML pernyataan ke titik akhir Amazon Cognito Anda. saml2/idpresponse SAMLPernyataan yang diputar ulang memiliki ID pernyataan yang menduplikasi ID dari respons IDP sebelumnya.

ID kumpulan pengguna adalah ID entitas SP

Anda harus memberikan IDP Anda dengan ID kumpulan pengguna Anda di penyedia layanan (SP)urn, juga disebut audiens URI atau ID entitas SP. Audiens URI untuk kumpulan pengguna Anda memiliki format berikut.

urn:amazon:cognito:sp:us-east-1_EXAMPLE

Anda dapat menemukan ID kumpulan pengguna Anda di bawah Ikhtisar kumpulan pengguna di konsol Amazon Cognito.

Petakan semua atribut yang diperlukan

Konfigurasikan SAML IDP Anda untuk memberikan nilai untuk atribut apa pun yang Anda tetapkan seperti yang diperlukan dalam kumpulan pengguna Anda. Misalnya, email adalah atribut wajib umum untuk kumpulan pengguna. Sebelum pengguna dapat masuk, pernyataan SAML IDP Anda harus menyertakan klaim bahwa Anda memetakan ke atribut kumpulan Pengguna. email Untuk informasi selengkapnya tentang pemetaan atribut, lihatMemetakan atribut iDP ke profil dan token.

Format pernyataan memiliki persyaratan khusus

SAMLIDP Anda harus menyertakan klaim berikut dalam pernyataan tersebut. SAML

  • NameIDKlaim. Amazon Cognito mengaitkan SAML pernyataan dengan pengguna tujuan oleh. NameID Jika NameID berubah, Amazon Cognito menganggap pernyataan tersebut untuk pengguna baru. Atribut yang Anda atur NameID dalam konfigurasi IDP Anda harus memiliki nilai persisten. Untuk menetapkan SAML pengguna ke profil pengguna yang konsisten di kumpulan pengguna Anda, tetapkan NameID klaim Anda dari atribut dengan nilai yang tidak berubah.

    <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:persistent"> carlos </saml2:NameID>

    A Format dalam NameID klaim IDP Anda urn:oasis:names:tc:SAML:1.1:nameid-format:persistent menunjukkan bahwa IDP Anda melewati nilai yang tidak berubah. Amazon Cognito tidak memerlukan deklarasi format ini, dan menetapkan format jika idP urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified Anda tidak menentukan format klaim. NameID Perilaku ini sesuai dengan bagian 2.2.2 Kompleks Tipe N ameIDType, dari spesifikasi SAML2.0.

  • AudienceRestrictionKlaim dengan Audience nilai yang menetapkan ID entitas SP kumpulan pengguna Anda sebagai target respons.

    <saml:AudienceRestriction> <saml:Audience> urn:amazon:cognito:sp:us-east-1_EXAMPLE </saml:AudienceRestriction>
  • Untuk sistem masuk tunggal yang dimulai SP, Response elemen dengan InResponseTo nilai ID permintaan asli. SAML

    <saml2p:Response Destination="https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse" ID="id123" InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" IssueInstant="Date-time stamp" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    catatan

    SAMLPernyataan yang diprakarsai IDP tidak boleh mengandung nilai. InResponseTo

  • SubjectConfirmationDataElemen dengan Recipient nilai saml2/idpresponse titik akhir kumpulan pengguna Anda dan, untuk yang diprakarsai SPSAML, InResponseTo nilai yang cocok dengan ID permintaan asli. SAML

    <saml2:SubjectConfirmationData InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" NotOnOrAfter="Date-time stamp" Recipient="https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse"/>
Permintaan masuk yang diprakarsai SP

Saat Otorisasi titik akhir mengalihkan pengguna ke halaman masuk IDP, Amazon Cognito menyertakan permintaan dalam parameter SAMLpermintaan. URL HTTP GET SAMLPermintaan berisi informasi tentang kumpulan pengguna Anda, termasuk ACS titik akhir Anda. Anda dapat secara opsional menerapkan tanda tangan kriptografi untuk permintaan ini.

Menandatangani permintaan dan mengenkripsi tanggapan

Setiap kumpulan pengguna dengan SAML penyedia menghasilkan key pair asimetris dan sertifikat penandatanganan untuk tanda tangan digital yang ditetapkan Amazon Cognito ke permintaan. SAML Setiap SAML IDP eksternal yang Anda konfigurasikan untuk mendukung respons terenkripsi menyebabkan SAML Amazon Cognito menghasilkan key pair dan sertifikat enkripsi baru untuk penyedia tersebut. Untuk melihat dan mengunduh sertifikat dengan kunci publik, pilih IDP Anda di tab Pengalaman masuk di konsol Amazon Cognito.

Untuk membangun kepercayaan dengan SAML permintaan dari kumpulan pengguna Anda, berikan iDP Anda salinan sertifikat penandatanganan kumpulan pengguna SAML 2.0 Anda. IDP Anda mungkin mengabaikan SAML permintaan yang ditandatangani oleh kumpulan pengguna jika Anda tidak mengonfigurasi iDP untuk menerima permintaan yang ditandatangani.

  1. Amazon Cognito menerapkan tanda tangan digital untuk SAML permintaan yang diteruskan pengguna ke IDP Anda. Kumpulan pengguna Anda menandatangani semua permintaan logout (SLO) tunggal, dan Anda dapat mengonfigurasi kumpulan pengguna untuk menandatangani permintaan single sign-on (SSO) untuk IDP eksternal SAML apa pun. Saat Anda memberikan salinan sertifikat, IDP Anda dapat memverifikasi integritas permintaan pengguna SAML Anda.

  2. SAMLIDP Anda dapat mengenkripsi SAML respons dengan sertifikat enkripsi. Saat Anda mengonfigurasi iDP dengan SAML enkripsi, IDP Anda hanya harus mengirim respons terenkripsi.

Mengkodekan karakter non-alfanumerik

Amazon Cognito tidak menerima karakter 4-byte UTF -8 seperti 😐 atau 𠮷 bahwa iDP Anda lolos sebagai nilai atribut. Anda dapat menyandikan karakter ke Base64, meneruskannya sebagai teks, dan kemudian mendekodekannya di aplikasi Anda.

Dalam contoh berikut, klaim atribut tidak akan diterima:

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">😐</saml2:AttributeValue> </saml2:Attribute>

Berbeda dengan contoh sebelumnya, klaim atribut berikut akan diterima:

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">8J+YkA==</saml2:AttributeValue> </saml2:Attribute>
Titik akhir metadata harus memiliki keamanan lapisan transportasi yang valid

Jika Anda melihat InvalidParameterException saat membuat SAML IDP dengan titik akhir HTTPS metadataURL, misalnya, “Kesalahan mengambil metadata dari <metadata endpoint>,” pastikan bahwa titik akhir metadata telah diatur SSL dengan benar dan ada SSL sertifikat valid yang terkait dengannya. Untuk informasi selengkapnya tentang memvalidasi sertifikat, lihat Apa itu AnSSL/TLSCertificate? .

Klien aplikasi dengan IDP yang diprakarsai hanya SAML dapat masuk SAML

Saat Anda mengaktifkan dukungan untuk IDP SAML 2.0 yang mendukung login yang diprakarsai IDP di klien aplikasi, Anda hanya dapat menambahkan SAML 2.0 IdPs lainnya ke klien aplikasi tersebut. Anda dicegah untuk menambahkan direktori pengguna di kumpulan pengguna dan semua penyedia identitas SAML non-eksternal ke klien aplikasi yang dikonfigurasi dengan cara ini.

Respons logout harus menggunakan binding POST

/saml2/logoutTitik akhir menerima LogoutResponse sebagai HTTP POST permintaan. Kumpulan pengguna tidak menerima respons logout dengan HTTP GET pengikatan.