All Products
Search
Document Center

CloudSSO:Contoh: Single sign-on Shibboleth dan CloudSSO

Last Updated:Jun 19, 2026

Konfigurasikan single sign-on (SSO) dari Shibboleth ke CloudSSO.

Sebelum memulai

Instal Shibboleth, Tomcat, dan server LDAP.

Catatan

Konfigurasi Shibboleth dalam topik ini hanya bersifat panduan untuk membantu Anda memahami proses konfigurasi SSO CloudSSO secara end-to-end. Alibaba Cloud tidak menyediakan layanan konsultasi untuk konfigurasi Shibboleth.

Langkah 1: Dapatkan metadata SAML SP dari Alibaba Cloud

  1. Masuk ke CloudSSO console.

  2. Pada panel navigasi di sebelah kiri, klik Settings.

  3. Pada bagian SSO Logon, unduh file metadata penyedia layanan (SP) dan simpan ke /opt/shibboleth-idp/metadata/aliyun-cloudsso-metadata.xml.

    Simpan Entity ID dari SP untuk digunakan nanti.

Langkah 2: Daftarkan Alibaba Cloud ke Shibboleth

Konfigurasikan file /opt/shibboleth-idp/conf/metadata-providers.xml untuk menentukan file metadata dari Langkah 1: Dapatkan metadata SAML SP dari Alibaba Cloud dan daftarkan Alibaba Cloud ke Shibboleth.

<!--
    <MetadataProvider id="LocalMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/>
-->
<!-- Ganti kode yang dikomentari di atas dengan kode berikut. -->
<MetadataProvider id="AliyunMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/aliyun-cloudsso-metadata.xml"/>

Langkah 3: Konfigurasikan atribut pengguna dari Shibboleth

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

    Konfigurasi default menggunakan file attribute-resolver.xml, yang tidak mencukupi. Untuk mengaktifkan konfigurasi lengkap, ganti dengan attribute-resolver-full.xml.

    <value>%{idp.home}/conf/attribute-resolver.xml</value>
    <!-- Ganti kode di atas dengan kode berikut. -->
    <value>%{idp.home}/conf/attribute-resolver-full.xml</value>
  2. Ubah file /opt/shibboleth/conf/attribute-resolver-full.xml.

    1. Dalam file tersebut, konfigurasikan atribut mana yang dikembalikan bersama informasi pengguna. Pada contoh ini, atribut mail dikembalikan.

      <!-- ========================================== -->
      <!--      Attribute Definitions                 -->
      <!-- ========================================== -->
      <!-- Schema: Core schema attributes-->
      <!-- Tambahkan kode berikut setelah komentar di atas. -->
      <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="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" encodeType="false" />
      </AttributeDefinition>
    2. Dalam file tersebut, baca pengaturan 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>
      -->
      <!-- Ganti contoh kode di atas dengan kode 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.

    Pada tag PolicyRequirementRule, ganti atribut value dengan entityID Alibaba Cloud dari Langkah 1: Dapatkan metadata SAML SP dari 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">
    <!-- Tambahkan kode berikut setelah kode di atas. -->
    <AttributeFilterPolicy id="aliyun">
    	<PolicyRequirementRule xsi:type="Requester" value="[entityID]" />
    	<AttributeRule attributeID="mail">
    		<PermitValueRule xsi:type="ANY" />
    	</AttributeRule>
    </AttributeFilterPolicy>

Langkah 4: Konfigurasikan SAML NameID

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

    Pada tag bean, ganti atribut relyingPartyIds dengan entityID Alibaba Cloud dari Langkah 1: Dapatkan metadata SAML SP dari 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>
    -->
    <!-- Ganti kode yang dikomentari di atas dengan kode 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 pembuatan NameID.

    <!-- Hapus komentar pada dua bean berikut untuk mengaktifkannya. -->
    <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 5: Dapatkan metadata SAML IdP dari Shibboleth

  1. Mulai ulang Tomcat untuk menerapkan perubahan Anda.

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

Langkah 6: Aktifkan SSO di CloudSSO

  1. Pada panel navigasi di sebelah kiri CloudSSO console, klik Settings.

  2. Pada bagian SSO Logon, klik Configure IdP.

  3. Pada kotak dialog Configure IdP, pilih Upload Metadata File.

  4. Klik Upload File dan unggah file metadata IdP dari Langkah 5: Dapatkan metadata SAML IdP dari Shibboleth.

  5. Nyalakan sakelar SSO untuk mengaktifkan SSO.

    Catatan

    Setelah Anda mengaktifkan logon SSO, logon dengan username dan password akan dinonaktifkan. Artinya, pengguna CloudSSO tidak dapat lagi masuk dengan kredensial platform mereka. Setelah diaktifkan, semua pengguna harus masuk melalui penyedia identitas Anda.

Langkah 7: Buat pengguna di CloudSSO

Buat pengguna di CloudSSO dengan nama yang sama seperti pengguna yang sesuai di Shibboleth.

  1. Pada panel navigasi di sebelah kiri CloudSSO console, pilih User Management > User.

  2. Pada halaman User, klik Create User.

  3. Pada panel Create User, masukkan Username.

    Pada contoh ini, username-nya adalah testUser@testdomain.alicloud.com.

  4. Atur status pengguna menjadi Enabled.

  5. Klik Close.

(Opsional) Langkah 8: Tetapkan izin kepada pengguna

Untuk mengizinkan pengguna mengakses resource di akun anggota Resource Directory tertentu setelah SSO, buat permission set dan berikan akses pengguna ke akun-akun tersebut.

  1. Buat permission set di CloudSSO untuk menentukan kebijakan.

    Untuk informasi selengkapnya, lihat Buat permission set.

  2. Berikan akses pengguna ke akun anggota.

    Untuk informasi selengkapnya, lihat Berikan akses ke akun anggota.

Verifikasi hasil

Anda dapat memulai SSO baik dari Alibaba Cloud maupun Shibboleth.

  • Memulai SSO dari Alibaba Cloud

    1. Pada halaman Overview di CloudSSO console, salin URL logon pengguna.

    2. Buka URL tersebut di browser baru.

    3. Klik Go. Anda akan diarahkan secara otomatis ke halaman login Shibboleth. Halaman SSO Login ditampilkan dengan bidang Enterprise Account Login URL terisi otomatis. Klik tombol Go untuk menuju halaman login penyedia identitas.

    4. Pada halaman logon Shibboleth, masukkan username (testUser) dan password, lalu klik Log On.

      Sistem akan secara otomatis melakukan logon dengan SSO dan mengarahkan Anda ke Portal Pengguna CloudSSO.

    5. Akses resource di akun anggota yang memiliki izin untuk Anda.

  • Memulai SSO dari Shibboleth

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

      Ganti <entityID> dalam URL dengan entityID Alibaba Cloud dari Langkah 1: Dapatkan metadata SAML SP dari Alibaba Cloud.

    2. Pada halaman logon Shibboleth, masukkan username (testUser) dan password, lalu klik Log On.

      Sistem akan secara otomatis melakukan logon dengan SSO dan mengarahkan Anda ke Portal Pengguna CloudSSO.

    3. Akses resource di akun anggota yang memiliki izin untuk Anda.

FAQ

Jika Anda mengalami masalah selama verifikasi, periksa file /opt/shibboleth-idp/logs/idp-process.log. Berikut adalah masalah umum:

Error setelah logon Shibboleth berhasil

Periksa pesan error di file /opt/shibboleth-idp/logs/idp-process.log. Jika error terkait dengan ValidateUsernamePassword, periksa pengaturan koneksi LDAP dan penerapan Anda. Pastikan Anda telah menghapus komentar pada bagian yang diperlukan dan tidak ada spasi tambahan.

Logon gagal dengan error "unable to connect to the ldap"

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

Error pengalihan: "The NameID is missing"

Verifikasi bahwa Anda telah memetakan atribut mail dari informasi pengguna dengan benar di Langkah 3: Konfigurasikan atribut pengguna dari Shibboleth. Juga, verifikasi bahwa NameID dikonfigurasi dengan benar di Langkah 4: Konfigurasikan SAML NameID.

Error akses: "Unsupported Request" pada https://<your_server_address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>

Periksa apakah entityId dikonfigurasi dengan benar. entityId harus konsisten di tiga lokasi: file metadata di folder metadata, file attribute-filter.xml, dan file relying-party.xml.

Error pengalihan: "The response signature is invalid"

Unggah kembali file metadata Shibboleth ke Alibaba Cloud.