全部产品
Search
文档中心

Resource Access Management:Contoh SSO berbasis peran menggunakan Shibboleth

更新时间:Nov 10, 2025

Topik ini memberikan contoh cara mengimplementasikan Single Sign-On (SSO) berbasis peran dari Shibboleth ke Alibaba Cloud, mencakup proses SSO berbasis peran end-to-end dari penyedia identitas (IdP) ke Alibaba Cloud.

Persiapan

  1. Instal Shibboleth, Tomcat, dan server LDAP.

  2. Konfigurasikan server LDAP.

    Untuk contoh ini, tambahkan akun administrator ke LDAP dengan DN uid=admin,ou=system dan kata sandi secret.

    Tambahkan akun uji coba ke LDAP dengan DN cn=Test User,ou=users,dc=wimpi,dc=net dan kata sandi secret. Gambar berikut menunjukkan detailnya.

    image.png

    Bidang informasi pengguna:

    • mail: Sesuai dengan nama logon Pengguna RAM.

    • memberof: Sesuai dengan nama Peran RAM.

    • samaccountname: Nama pengguna untuk masuk ke Shibboleth.

    • userpassword: Kata sandi logon.

  3. Konfigurasikan Shibboleth agar terhubung ke server LDAP.

    Ubah data berikut dalam file /opt/shibboleth-idp/conf/ldap.properties:

    # Mode autentikasi LDAP
    idp.authn.LDAP.authenticator = bindSearchAuthenticator
    
    # Alamat LDAP
    idp.authn.LDAP.ldapURL = ldaps://[alamat server LDAP]:389
    
    # Nonaktifkan TSL dan SSL
    idp.authn.LDAP.useStartTLS = false
    idp.authn.LDAP.useSSL = false
    
    # Direktori pencarian dasar
    idp.authn.LDAP.baseDN = dc=wimpi,dc=net
    idp.authn.LDAP.subtreeSearch = true
    # Aturan pencocokan logon. samaccountname adalah bidang dalam data pengguna dan digunakan untuk masuk ke LDAP.
    idp.authn.LDAP.userFilter= (samaccountname={user})
    
    # Akun dan kata sandi admin
    idp.authn.LDAP.bindDN = uid=admin,ou=system
    idp.authn.LDAP.bindDNCredential = secret
    
    idp.attribute.resolver.LDAP.searchFilter =(samaccountname=$resolutionContext.principal)
Catatan

Konfigurasi Shibboleth dalam topik ini bersifat saran dan hanya disediakan untuk membantu Anda memahami proses logon SSO end-to-end. Alibaba Cloud tidak menyediakan layanan konsultasi untuk konfigurasi Shibboleth.

Langkah 1: Unduh file metadata SAML SP Alibaba Cloud

  1. Masuk ke Konsol RAM sebagai administrator RAM.

  2. Di panel navigasi sebelah kiri, pilih Integrations > SSO.

  3. Pada tab Role-based SSO, klik tab SAML dan salin URL file metadata penyedia layanan (SP) Security Assertion Markup Language (SAML).

  4. Buka tautan yang telah disalin di jendela browser baru dan simpan file XML metadata ke /opt/shibboleth-idp/metadata/aliyun-ram-role-metadata.xml.

    Catatan

    File XML metadata berisi informasi akses untuk Alibaba Cloud sebagai penyedia layanan (SP) SAML. Catat nilai atribut entityID dalam elemen EntityDescriptor. Nilai ini akan Anda perlukan nanti saat mengonfigurasi Shibboleth.

Langkah 2: Daftarkan Alibaba Cloud ke Shibboleth

Konfigurasikan file /opt/shibboleth-idp/conf/metadata-providers.xml dengan menentukan file metadata yang diperoleh di Langkah 1: Unduh file metadata SAML SP Alibaba Cloud untuk mendaftarkan Alibaba Cloud ke Shibboleth.

<!--
    <MetadataProvider id="LocalMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/>
-->

<!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan ganti kode tersebut dengan kode yang ditampilkan pada baris berikut. -->

<MetadataProvider id="AliyunMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/aliyun-ram-role-metadata.xml"/>

Langkah 3: Dapatkan file metadata SAML IdP di Shibboleth

  1. Mulai ulang Apache Tomcat agar konfigurasi sebelumnya berlaku.

  2. Akses https:///<alamat server Anda>/idp/shibboleth dan simpan file metadata ke komputer Anda.

Langkah 4: Buat SAML IdP di Alibaba Cloud

  1. Masuk ke Konsol RAM dengan Akun Alibaba Cloud Anda.

  2. Di panel navigasi sebelah kiri, pilih Integrations > SSO.

  3. Di tab Role-based SSO, klik tab SAML, lalu klik Add IdP.

  4. Di halaman Create IdP, atur IdP Name menjadi shibboleth-provider dan konfigurasikan Remarks.

  5. Di bagian Metadata File, klik Upload Metadata dan unggah metadata IdP yang diperoleh di Langkah 3: Dapatkan file metadata SAML IdP di Shibboleth.

  6. Klik Create IdP.

Lihat detail IdP yang telah dibuat dan catat Nama Sumber Daya Alibaba Cloud (ARN) IdP tersebut untuk digunakan selanjutnya.

Langkah 5: Buat peran RAM di Alibaba Cloud

  1. Di panel navigasi sebelah kiri Konsol RAM, pilih Identities > Roles.

  2. Di halaman Roles, klik Create Role.

  3. Di pojok kanan atas halaman Create Role, klik Switch to Policy Editor.

  4. Tentukan SAML IdP di editor.

    Editor mendukung dua mode: editor visual dan editor skrip. Contoh ini menggunakan editor visual. Di bagian Principal, atur Identity Provider Type menjadi SAML dan pilih IdP yang telah dibuat di Langkah 4: Buat SAML IdP di Alibaba Cloud (shibboleth-provider).

  5. Di editor, atur kondisi saml:recipient menjadi https://signin.alibabacloud.com/saml-role/sso.

  6. Di kotak dialog Create Role, atur parameter Role Name menjadi worker, lalu klik OK.

Lihat detail peran RAM yang telah dibuat dan catat ARN peran RAM tersebut untuk digunakan selanjutnya.

Langkah 6: Konfigurasikan atribut pengguna yang dikembalikan oleh Shibboleth

  1. Ubah file /opt/shibboleth/conf/services.xml.

    File konfigurasi attribute-resolver.xml bawaan tidak lengkap. Gantilah dengan attribute-resolver-full.xml untuk menggunakan konfigurasi lengkap.

    <value>%{idp.home}/conf/attribute-resolver.xml</value>
    <!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan ganti kode tersebut dengan kode yang ditampilkan pada baris berikut. -->
    <value>%{idp.home}/conf/attribute-resolver-full.xml</value>
  2. Ubah file /opt/shibboleth/conf/attribute-resolver-full.xml.

    1. Dalam file ini, konfigurasikan atribut-atribut yang akan dikembalikan dalam informasi pengguna. Dalam contoh ini, bidang mail dan memberof dikembalikan.

      id dari atribut memberof adalah role, yang merepresentasikan peran pengguna. Nilai tag ReturnValue adalah <ARN peran RAM tanpa nama peran (worker) + '$1'>,<ARN SP>. Anda dapat memperoleh <ARN SP> dari Langkah 4: Buat SAML IdP di Alibaba Cloud dan ARN peran RAM dari Langkah 5: Buat peran RAM di Alibaba Cloud.

      Catatan

      Nama peran diganti dengan $1 untuk mendukung beberapa peran. Anda dapat mengubah peran pengguna dengan menyesuaikan bidang memberof dalam informasi pengguna.

      Atribut memberof adalah atribut pengguna kustom, bukan atribut internal. Anda dapat menggantinya dengan atribut lain yang menunjukkan peran pengguna.

      <!-- ========================================== -->
      <!--      Attribute Definitions                 -->
      <!-- ========================================== -->
      
      <!-- Schema: Core schema attributes-->
      
      <!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan tambahkan kode yang ditampilkan pada baris berikut. -->
      
      <AttributeDefinition xsi:type="Simple" id="mail">
          <InputDataConnector ref="myLDAP" attributeNames="mail" />
          <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:mail" encodeType="false" />
          <AttributeEncoder xsi:type="SAML2String" name="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName" friendlyName="mail" encodeType="false" />
      </AttributeDefinition>
      <AttributeDefinition xsi:type="Mapped" id="role">
          <InputDataConnector ref="myLDAP" attributeNames="memberof" />
          <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:role" encodeType="false" />
          <AttributeEncoder xsi:type="SAML2String" name="https://www.aliyun.com/SAML-Role/Attributes/Role" friendlyName="role" encodeType="false" />
          <ValueMap>
              <ReturnValue>acs:ram::114*******71701:role/$1,acs:ram::114*******71701:saml-provider/shibboleth-provider</ReturnValue>
              <SourceValue>(.+)</SourceValue>
          </ValueMap>
      </AttributeDefinition>
    2. Dalam file ini, baca informasi konfigurasi dari /opt/shibboleth/conf/ldap.properties untuk membuat koneksi LDAP.

      <!-- Example LDAP Connector -->
      <!--
      	<DataConnector id="myLDAP" xsi:type="LDAPDirectory"
      		ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
      		baseDN="%{idp.attribute.resolver.LDAP.baseDN}"
      		principal="%{idp.attribute.resolver.LDAP.bindDN}"
      		principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
      		useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}"
      		...
      	</DataConnector>
      -->
      
      <!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan ganti kode tersebut dengan kode yang ditampilkan pada baris berikut. -->
      
      <DataConnector id="myLDAP" xsi:type="LDAPDirectory"
      			   ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
      			   baseDN="%{idp.attribute.resolver.LDAP.baseDN}"
      			   principal="%{idp.attribute.resolver.LDAP.bindDN}"
      			   principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
      			   useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS}"
      			   connectTimeout="%{idp.attribute.resolver.LDAP.connectTimeout}"
      			   responseTimeout="%{idp.attribute.resolver.LDAP.responseTimeout}">
      	<FilterTemplate>
      		<![CDATA[
      				%{idp.attribute.resolver.LDAP.searchFilter}
      			]]>
      	</FilterTemplate>
      </DataConnector>
  3. Ubah file /opt/shibboleth/conf/attribute-filter.xml untuk menambahkan filter atribut.

    Ganti atribut value dalam tag PolicyRequirementRule dengan entityID Alibaba Cloud yang telah dicatat di Langkah 1: Unduh file metadata SAML SP Alibaba Cloud.

    <AttributeFilterPolicyGroup id="ShibbolethFilterPolicy"
    							xmlns="urn:mace:shibboleth:2.0:afp"
    							xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    							xsi:schemaLocation="urn:mace:shibboleth:2.0:afp http://shibboleth.net/schema/idp/shibboleth-afp.xsd">
    	
    <!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan tambahkan kode yang ditampilkan pada baris berikut. -->
    	
    <AttributeFilterPolicy id="aliyun">
    	<PolicyRequirementRule xsi:type="Requester" value="[entityID]" />
    	<AttributeRule attributeID="mail">
    		<PermitValueRule xsi:type="ANY" />
    	</AttributeRule>
    	<AttributeRule attributeID="role">
    		<PermitValueRule xsi:type="ANY" />
    	</AttributeRule>
    </AttributeFilterPolicy>

Langkah 7: Konfigurasikan atribut NameID dalam tanggapan SAML

  1. Ubah file /opt/shibboleth/conf/relying-party.xml untuk mengonfigurasi NameID untuk Alibaba Cloud.

    Ganti atribut relyingPartyIds dalam tag bean dengan entityID Alibaba Cloud yang telah dicatat di Langkah 1: Unduh file metadata SAML SP Alibaba Cloud.

    <!--
    	Override example that identifies a single RP by name and configures it
    	for SAML 2 SSO without encryption. This is a common "vendor" scenario.
    -->
    <!--
    <bean parent="RelyingPartyByName" c:relyingPartyIds="https://sp.example.org">
    	<property name="profileConfigurations">
    		<list>
    			<bean parent="SAML2.SSO" p:encryptAssertions="false" />
    		</list>
    	</property>
    </bean>
    -->
    
    <!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan ganti kode tersebut dengan kode yang ditampilkan pada baris berikut. -->
    
    <bean parent="RelyingPartyByName" c:relyingPartyIds="[entityID]">
        <property name="profileConfigurations">
            <list>
                <bean parent="SAML2.SSO" p:encryptAssertions="false" p:nameIDFormatPrecedence="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" />
            </list>
        </property>
    </bean>
  2. Ubah file /opt/shibboleth/conf/saml-nameid.xml untuk mengonfigurasi cara pembuatan NameID.

    <!-- Temukan kode berikut. Hapus komentar kode tersebut agar konfigurasi berlaku.-->
    
    <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
        p:omitQualifiers="true"
        p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
        p:attributeSourceIds="#{ {'mail'} }" />
    
    <bean parent="shibboleth.SAML1AttributeSourcedGenerator"
        p:omitQualifiers="true"
        p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
        p:attributeSourceIds="#{ {'mail'} }" />
  3. Ubah file /opt/shibboleth/conf/saml-nameid.properties untuk mengonfigurasi properti NameID.

    idp.nameid.saml2.default = urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
    idp.persistentId.useUnfilteredAttributes = true
    idp.persistentId.encoding = BASE32

Langkah 8: Mulai Shibboleth

Mulai ulang Apache Tomcat agar konfigurasi sebelumnya berlaku.

Verifikasi hasil

Setelah menyelesaikan konfigurasi di atas, Anda dapat memulai SSO dari Shibboleth.

  1. Akses https://<alamat server Anda>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.

    <entityID> dalam URL adalah entityID Alibaba Cloud yang telah dicatat di Langkah 1: Unduh file metadata SAML SP Alibaba Cloud.

  2. Di halaman logon Shibboleth, masukkan nama pengguna dan kata sandi, lalu klik Log On.

    Setelah logon berhasil, Anda akan diarahkan ke halaman utama Konsol Manajemen Alibaba Cloud sebagai peran RAM worker.

FAQ

Jika Anda mengalami masalah selama verifikasi, periksa file /opt/shibboleth-idp/logs/idp-process.log untuk mengidentifikasi penyebabnya. Bagian-bagian berikut menjelaskan masalah umum:

Apa yang harus saya lakukan jika terjadi pengecualian saat menggunakan nama pengguna dan kata sandi yang valid untuk masuk ke Shibboleth?

Periksa pesan kesalahan di /opt/shibboleth-idp/logs/idp-process.log. Jika kesalahan terkait dengan ValidateUsernamePassword, periksa konfigurasi dan penerapan koneksi LDAP. Pastikan Anda telah menghapus komentar dan tidak memasukkan spasi tambahan.

Apa yang harus saya lakukan jika sistem tidak merespons setelah logon dan menampilkan pesan unable to connect to the ldap?

Periksa konfigurasi koneksi LDAP di file ldap.properties dan attribute-resolver-full.xml.

Apa yang harus saya lakukan jika saya diarahkan ke Alibaba Cloud setelah logon dan pesan The NameID is missing ditampilkan?

Verifikasi bahwa bidang mail dipetakan dengan benar sebagai atribut di Langkah 6: Konfigurasikan atribut pengguna yang dikembalikan oleh Shibboleth dan bahwa atribut NameID dikonfigurasi dengan benar di Langkah 7: Konfigurasikan atribut NameID dalam tanggapan SAML.

Apa yang harus saya lakukan jika pesan Unsupported Request ditampilkan saat saya mengakses https://<alamat server Anda>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>?

Verifikasi bahwa entityId dikonfigurasi dengan benar. Nilai entityId harus sama di file metadata dalam folder metadata, file attribute-filter.xml, dan file relying-party.xml.

Apa yang harus saya lakukan jika saya diarahkan ke Alibaba Cloud setelah logon dan pesan Can not find SAML role attribute which is required ditampilkan?

Verifikasi bahwa bidang memberof dalam informasi pengguna dipetakan dengan benar ke role di Langkah 6: Konfigurasikan atribut pengguna yang dikembalikan oleh Shibboleth. Periksa dengan cermat nilai dalam tag ReturnValue.

Apa yang harus saya lakukan jika saya diarahkan ke Alibaba Cloud setelah logon dan pesan Can not find SAML role session name attribute which is required ditampilkan?

Verifikasi bahwa name dari atribut mail adalah https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName di Langkah 6: Konfigurasikan atribut pengguna yang dikembalikan oleh Shibboleth. Beberapa pengguna mungkin lupa mengubah nilai name saat mereka mengubah konfigurasi SSO berbasis pengguna menjadi konfigurasi SSO berbasis peran.

Apa yang harus saya lakukan jika saya diarahkan ke Alibaba Cloud setelah logon dan pesan The response signature is invalid ditampilkan?

Unggah ulang file metadata Shibboleth ke Alibaba Cloud.