Topik ini menjelaskan sintaks dari sebuah Security Assertion Markup Language (SAML) response untuk Single Sign-On (SSO) berbasis peran. Topik ini juga menjelaskan elemen-elemen dari asersi SAML dalam respon SAML.
Informasi latar belakang
Selama proses SSO berbasis SAML 2.0, setelah identitas pengguna diverifikasi, penyedia identitas (IdP) menghasilkan respons otentikasi dan mengirimkannya ke Alibaba Cloud melalui browser atau program. Respons ini mencakup asersi SAML yang sesuai dengan spesifikasi HTTP POST binding dalam SAML 2.0. Alibaba Cloud menggunakan asersi SAML untuk menentukan status login dan identitas pengguna. Oleh karena itu, asersi SAML harus mencakup elemen-elemen yang diperlukan oleh Alibaba Cloud. Jika asersi SAML tidak memuat elemen-elemen tersebut, SSO akan gagal.
Respon SAML
Pastikan bahwa setiap respon SAML yang dikirim oleh IdP Anda ke Alibaba Cloud mencakup elemen-elemen berikut. Jika tidak, SSO akan gagal.
<saml2p:Response>
<saml2:Issuer>...</saml2:Issuer>
<saml2p:Status>
...
</saml2p:Status>
<saml2:Assertion>
<saml2:Issuer>...</saml2:Issuer>
<ds:Signature>
...
</ds:Signature>
<saml2:Subject>
<saml2:NameID>${NameID}</saml2:NameID>
<saml2:SubjectConfirmation>
...
</saml2:SubjectConfirmation>
</saml2:Subject>
<saml2:Conditions>
<saml2:AudienceRestriction>
<saml2:Audience>${Audience}</saml2:Audience>
</saml2:AudienceRestriction>
</saml2:Conditions>
<saml2:AuthnStatement>
...
</saml2:AuthnStatement>
<saml2:AttributeStatement>
<saml2:Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName">
...
</saml2:Attribute>
<saml2:Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role">
...
</saml2:Attribute>
</saml2:AttributeStatement>
</saml2:Assertion>
</saml2p:Response>Elemen dalam asersi SAML
Common elements in SAML 2.0
Untuk informasi lebih lanjut tentang SAML 2.0, lihat SAML 2.0.
Elemen
Deskripsi
IssuerNilai dari elemen
Issuerharus cocok denganEntityIDdalam file metadata yang Anda unggah untuk IdP di Konsol Manajemen Alibaba Cloud.SignatureAsersi SAML harus ditandatangani. Elemen
Signatureharus berisi informasi seperti nilai tanda tangan dan algoritma tanda tangan. Tanda tangan digunakan untuk memverifikasi bahwa asersi SAML yang ditandatangani tidak dimodifikasi setelah tanda tangan dihasilkan.SubjectElemen
Subjectharus berisi sub-elemen berikut:Hanya satu sub-elemen
NameID. Anda harus menentukan nilai dariNameIDberdasarkan SAML 2.0. Namun, Alibaba Cloud tidak menentukan identitas login berdasarkan nilai NameID.Hanya satu sub-elemen
SubjectConfirmationyang berisi sub-elemenSubjectConfirmationData. Sub-elemenSubjectConfirmationDataharus berisi atribut berikut:NotOnOrAfter: periode validitas asersi SAML.Recipient: penerima asersi SAML. Alibaba Cloud memeriksa penerima asersi SAML berdasarkan nilai atribut ini. Oleh karena itu, Anda harus mengatur atribut ini kehttps://signin.alibabacloud.com/saml-role/sso.
Skrip berikut memberikan contoh elemen
Subject:<Subject> <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">administrator</NameID> <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> <SubjectConfirmationData NotOnOrAfter="2019-01-01T00:01:00.000Z" Recipient="https://signin.alibabacloud.com/saml-role/sso"/> </SubjectConfirmation> </Subject>
ConditionsElemen
Conditionsharus berisi sub-elemenAudienceRestriction. Sub-elemen AudienceRestriction dapat berisi satu atau lebih sub-elemenAudience. Nilai dari sub-elemenAudienceharusurn:alibaba:cloudcomputing:international.Skrip berikut memberikan contoh elemen
Conditions:<Conditions> <AudienceRestriction> <Audience>urn:alibaba:cloudcomputing:international</Audience> </AudienceRestriction> </Conditions>Custom elements required by Alibaba Cloud
Alibaba Cloud mengharuskan elemen
AttributeStatementdalam asersi SAML mencakup sub-elemenAttributeberikut:Atribut Peran: elemen
Attributedengan atributNamedisetel kehttps://www.aliyun.com/SAML-Role/Attributes/Role.Sub-elemen ini wajib dan mencakup satu atau lebih sub-elemen
AttributeValue. AttributeValue mencantumkan peran yang dapat diasumsikan oleh pengguna di IdP Anda. Nilai dari sub-elemen AttributeValue adalah pasangan yang dipisahkan koma antara Alibaba Cloud Resource Name (ARN) dari peran dan ARN dari IdP. Anda dapat melihat ARN dari peran dan ARN dari IdP di Konsol RAM.Untuk melihat ARN dari peran, buka halaman Roles dan klik nama Peran RAM. Di halaman yang muncul, Anda dapat melihat ARN dari peran di bagian Basic Information.
Untuk melihat ARN dari IdP, buka halaman SSO. Pada tab Role-based SSO, klik nama IdP. Anda dapat melihat ARN dari IdP di bagian IdP Information.
CatatanJika atribut peran mencakup beberapa sub-elemen AttributeValue, pengguna harus memilih peran mana yang akan diasumsikan saat masuk ke Konsol Manajemen Alibaba Cloud.
Skrip berikut memberikan contoh atribut Role
attribute:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/Role"> <AttributeValue>acs:ram::$account_id:role/role1,acs:ram::$account_id:saml-provider/provider1</AttributeValue> <AttributeValue>acs:ram::$account_id:role/role2,acs:ram::$account_id:saml-provider/provider1</AttributeValue> </Attribute>CatatanNilai dari
$account_idadalah ID akun Alibaba Cloud yang mendefinisikan peran RAM dan IdP.Atribut RoleSessionName: elemen
Attributedengan atributNamedisetel kehttps://www.aliyun.com/SAML-Role/Attributes/RoleSessionName.Sub-elemen ini wajib dan hanya mencakup satu sub-elemen
AttributeValueyang menentukan informasi pengguna yang akan ditampilkan di Konsol RAM dan log ActionTrail. Jika Anda ingin beberapa pengguna mengasumsikan peran yang sama, tentukan nilai berbeda dari atributRoleSessionNameuntuk pengguna tersebut. Setiap nilai secara unik mengidentifikasi pengguna. Misalnya, Anda dapat mengatur nilainya menjadi ID karyawan atau alamat email.Nilai dalam sub-elemen
AttributeValueharus memiliki panjang 2 hingga 64 karakter, dan hanya dapat mencakup huruf, angka, serta karakter khusus berikut:- _ . @ =.Skrip berikut memberikan contoh atribut RoleSessionName
attribute:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName"> <AttributeValue>user_id</AttributeValue> </Attribute>Atribut SessionDuration: sub-elemen
Attributedengan atributNamedisetel kehttps://www.aliyun.com/SAML-Role/Attributes/SessionDuration.Elemen ini opsional dan hanya mencakup satu sub-elemen
AttributeValueyang menentukan durasi maksimum setiap sesi. Nilai dari sub-elemen ini adalah bilangan bulat, dalam detik. Nilai ini tidak boleh melebihi durasi sesi maksimum yang ditentukan untuk atribut Role. Nilai minimum adalah 900 detik.Skrip berikut memberikan contoh atribut SessionDuration
attribute:<Attribute Name="https://www.aliyun.com/SAML-Role/Attributes/SessionDuration"> <AttributeValue>1800</AttributeValue> </Attribute>
Maximum role session duration
Jika Anda menggunakan konsol untuk mengasumsikan peran, durasi sesi maksimum untuk peran tersebut adalah nilai atribut
SessionDurationyang ditentukan dalam asersi SAML. Jika atributSessionNotOnOrAfterdari elemenAuthnStatementjuga ditentukan, durasi sesi maksimum adalah nilai terkecil antaraSessionDurationdanSessionNotOnOrAfter. Jika baik SessionDuration maupun SessionNotOnOrAfter tidak ditentukan, durasi sesi maksimum adalah nilai terkecil antara parameter Maximum Session Duration dari peran dan parameter Logon Session Valid For. Untuk informasi lebih lanjut, lihat Kelola pengaturan keamanan pengguna RAM dan Tentukan durasi sesi maksimum untuk peran RAM.Jika Anda telah menentukan parameter
DurationSecondssaat memanggil operasi AssumeRoleWithSAML dan mendefinisikan atributSessionNotOnOrAfterdalam elemenAuthnStatement, durasi sesi maksimum adalah nilai terkecil antaraDurationSecondsdanSessionNotOnOrAfter. Untuk informasi lebih lanjut, lihat AssumeRoleWithSAML. Jika baik SessionDuration maupun SessionNotOnOrAfter tidak ditentukan, durasi sesi maksimum adalah 3.600 detik secara default.