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
-
Amazon Cognito mendukung
relayState
nilai yang lebih besar dari 80 byte. Sementara SAML spesifikasi menyatakan bahwarelayState
nilai “tidak boleh melebihi 80 byte panjangnya”, praktik industri saat ini sering menyimpang dari perilaku ini. Akibatnya, menolakrelayState
nilai yang lebih besar dari 80 byte akan merusak banyak integrasi SAML penyedia standar. -
relayState
Token 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/idpresponseLihat 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
-
NameID
Klaim. Amazon Cognito mengaitkan SAML pernyataan dengan pengguna tujuan oleh.NameID
JikaNameID
berubah, Amazon Cognito menganggap pernyataan tersebut untuk pengguna baru. Atribut yang Anda aturNameID
dalam konfigurasi IDP Anda harus memiliki nilai persisten. Untuk menetapkan SAML pengguna ke profil pengguna yang konsisten di kumpulan pengguna Anda, tetapkanNameID
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
dalamNameID
klaim IDP Andaurn: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 idPurn: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. -
AudienceRestriction
Klaim denganAudience
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 denganInResponseTo
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
-
SubjectConfirmationData
Elemen denganRecipient
nilaisaml2/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.
-
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.
-
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/logout
Titik akhir menerimaLogoutResponse
sebagaiHTTP POST
permintaan. Kumpulan pengguna tidak menerima respons logout denganHTTP GET
pengikatan.