全部产品
Search
文档中心

Resource Access Management:Respon SAML untuk Single Sign-On (SSO) berbasis peran

更新时间:Jul 06, 2025

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

    Issuer

    Nilai dari elemen Issuer harus cocok dengan EntityID dalam file metadata yang Anda unggah untuk IdP di Konsol Manajemen Alibaba Cloud.

    Signature

    Asersi SAML harus ditandatangani. Elemen Signature harus 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.

    Subject

    Elemen Subject harus berisi sub-elemen berikut:

    • Hanya satu sub-elemen NameID. Anda harus menentukan nilai dari NameID berdasarkan SAML 2.0. Namun, Alibaba Cloud tidak menentukan identitas login berdasarkan nilai NameID.

    • Hanya satu sub-elemen SubjectConfirmation yang berisi sub-elemen SubjectConfirmationData. Sub-elemen SubjectConfirmationData harus 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 ke https://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>

    Conditions

    Elemen Conditions harus berisi sub-elemen AudienceRestriction. Sub-elemen AudienceRestriction dapat berisi satu atau lebih sub-elemen Audience. Nilai dari sub-elemen Audience harus urn: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 AttributeStatement dalam asersi SAML mencakup sub-elemen Attribute berikut:

    • Atribut Peran: elemen Attribute dengan atribut Name disetel ke https://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.

      Catatan

      Jika 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>               
      Catatan

      Nilai dari $account_id adalah ID akun Alibaba Cloud yang mendefinisikan peran RAM dan IdP.

    • Atribut RoleSessionName: elemen Attribute dengan atribut Name disetel ke https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName.

      Sub-elemen ini wajib dan hanya mencakup satu sub-elemen AttributeValue yang 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 atribut RoleSessionName untuk pengguna tersebut. Setiap nilai secara unik mengidentifikasi pengguna. Misalnya, Anda dapat mengatur nilainya menjadi ID karyawan atau alamat email.

      Nilai dalam sub-elemen AttributeValue harus 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 Attribute dengan atribut Name disetel ke https://www.aliyun.com/SAML-Role/Attributes/SessionDuration.

      Elemen ini opsional dan hanya mencakup satu sub-elemen AttributeValue yang 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 SessionDuration yang ditentukan dalam asersi SAML. Jika atribut SessionNotOnOrAfter dari elemen AuthnStatement juga ditentukan, durasi sesi maksimum adalah nilai terkecil antara SessionDuration dan SessionNotOnOrAfter. 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 DurationSeconds saat memanggil operasi AssumeRoleWithSAML dan mendefinisikan atribut SessionNotOnOrAfter dalam elemen AuthnStatement, durasi sesi maksimum adalah nilai terkecil antara DurationSeconds dan SessionNotOnOrAfter. Untuk informasi lebih lanjut, lihat AssumeRoleWithSAML. Jika baik SessionDuration maupun SessionNotOnOrAfter tidak ditentukan, durasi sesi maksimum adalah 3.600 detik secara default.

Referensi

Bagaimana cara melihat respon SAML di Google Chrome?