All Products
Search
Document Center

Resource Access Management:Siapkan SSO berbasis pengguna dengan Shibboleth

Last Updated:Jun 19, 2026

Gunakan contoh ini untuk mengonfigurasi Single Sign-On (SSO) berbasis pengguna antara Shibboleth dan Alibaba Cloud serta memahami proses penyiapan end-to-end.

Sebelum Anda mulai

  1. Instal Shibboleth, Tomcat, dan server Lightweight Directory Access Protocol (LDAP).

  2. Konfigurasikan server LDAP.

    Untuk contoh ini, tambahkan akun administrator ke LDAP dengan distinguished name (DN) uid=admin,ou=system dan password secret.

    Tambahkan akun uji coba ke LDAP dengan DN cn=Test User,ou=users,dc=wimpi,dc=net dan password secret. Detail akun ditampilkan pada gambar berikut.

    image.png

    Bidang informasi pengguna adalah:

    • mail: Dipetakan ke nama logon Pengguna RAM di Alibaba Cloud.

    • memberof: Dipetakan ke nama Peran RAM di Alibaba Cloud.

    • samaccountname: Username yang digunakan untuk login ke Shibboleth.

    • userpassword: Kata sandi logon.

  3. Konfigurasikan Shibboleth agar terhubung ke server LDAP.

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

    # Mode autentikasi LDAP
    idp.authn.LDAP.authenticator = bindSearchAuthenticator
    
    # Alamat server LDAP
    idp.authn.LDAP.ldapURL = ldaps://[LDAP-server-address]:389
    
    # Nonaktifkan TLS 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 yang digunakan untuk login LDAP.
    idp.authn.LDAP.userFilter= (samaccountname={user})
    
    # Akun dan password 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 hanya untuk demonstrasi dan bertujuan menggambarkan proses end-to-end dalam menyiapkan SSO dengan Alibaba Cloud. Alibaba Cloud tidak menyediakan layanan konsultasi untuk konfigurasi Shibboleth.

Langkah 1: Dapatkan metadata SAML SP dari Alibaba Cloud

  1. Login ke Konsol RAM sebagai administrator RAM.

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

  3. Klik tab User-based SSO. Di bagian SAML Service Provider Metadata URL, salin URL metadata untuk Akun Alibaba Cloud Anda.

  4. Buka URL yang telah disalin di jendela browser baru. Simpan halaman tersebut sebagai file XML ke /opt/shibboleth-idp/metadata/aliyun-ram-user-metadata.xml.

    Catatan

    Catat nilai atribut entityID dari elemen EntityDescriptor. Nilai ini diperlukan untuk konfigurasi Shibboleth selanjutnya.

Langkah 2: Daftarkan Alibaba Cloud ke Shibboleth

Konfigurasikan file /opt/shibboleth-idp/conf/metadata-providers.xml agar mengarah ke file metadata dari Langkah 1: Dapatkan metadata SAML SP dari Alibaba Cloud. Hal ini mendaftarkan Alibaba Cloud sebagai penyedia layanan di Shibboleth.

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

<!-- Temukan blok kode yang dikomentari di atas dan ganti dengan kode berikut. -->

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

Langkah 3: Konfigurasikan atribut pengguna yang dikembalikan oleh Shibboleth

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

    Konfigurasi default menggunakan attribute-resolver.xml, yang memiliki pengaturan terbatas. Ganti dengan attribute-resolver-full.xml untuk mengaktifkan konfigurasi lengkap.

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

    1. Tentukan atribut yang akan dikembalikan dalam informasi pengguna. Contoh ini mengembalikan atribut mail.

      <!-- ========================================== -->
      <!--      Attribute Definitions                 -->
      <!-- ========================================== -->
      
      <!-- Schema: Core schema attributes-->
      
      <!-- Temukan blok kode yang dikomentari di atas dan tambahkan kode berikut setelahnya. -->
      
      <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 yang sama, konfigurasikan koneksi LDAP menggunakan pengaturan dari /opt/shibboleth/conf/ldap.properties.

      <!-- 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}",
      		...omitted...
      	</DataConnector>
      -->
      
      <!-- Temukan blok kode contoh di atas dan ganti 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.

    Ganti atribut value dalam tag PolicyRequirementRule 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">
    	
    <!-- Temukan kode di atas dan tambahkan kode berikut setelahnya. -->
    	
    <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 menyiapkan konfigurasi NameID untuk Alibaba Cloud.

    Ganti atribut relyingPartyIds dalam tag bean 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>
    -->
    
    <!-- Temukan blok kode yang dikomentari di atas dan ganti 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 cara pembuatan NameID.

    <!-- Temukan dua blok kode berikut dan hapus komentar untuk menerapkan konfigurasi. -->
    
    <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 terkait 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 konfigurasi.

  2. Akses https://<your-server-address>/idp/shibboleth dan simpan file metadata ke komputer lokal Anda.

Langkah 6: Aktifkan SSO berbasis pengguna di Alibaba Cloud

  1. Di panel navigasi sebelah kiri Konsol RAM, pilih Integrations > SSO.

  2. Klik tab User-based SSO. Di bagian SSO Status, klik Enabled.

    Catatan

    SSO berbasis pengguna adalah fitur global. Setelah diaktifkan, semua Pengguna RAM harus login menggunakan SSO. Jika Anda mengonfigurasi SSO sebagai Pengguna RAM, biarkan fitur ini dinonaktifkan untuk sementara. Pastikan Anda telah membuat Pengguna RAM yang diperlukan terlebih dahulu untuk menghindari terkunci akibat salah konfigurasi. Sebagai alternatif, gunakan Akun Alibaba Cloud Anda untuk mengonfigurasi SSO dan hindari masalah ini.

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

  4. Di bagian Auxiliary Domain Name, klik Edit, lalu aktifkan auxiliary domain name dan atur ke sufiks email pengguna di Shibboleth.

    Dalam contoh ini, nilainya adalah testdomain.alicloud.com.

Langkah 7: Buat Pengguna RAM di Alibaba Cloud

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

  2. Di halaman Users, klik Create User.

  3. Di halaman Create User, masukkan Logon Name dan Display Name.

    Catatan

    Pastikan awalan nama logon Pengguna RAM sesuai dengan awalan email pengguna di Shibboleth. Dalam contoh ini, awalannya adalah testUser.

  4. Di bagian Access Mode, pilih Console Access dan atur kata sandi logon serta parameter lainnya.

  5. Klik OK.

Verifikasi hasil

Setelah menyelesaikan konfigurasi, Anda dapat memulai login SSO baik dari Alibaba Cloud maupun Shibboleth.

Mulai SSO dari Alibaba Cloud

  1. Di halaman Overview Konsol RAM, salin URL login untuk Pengguna RAM.

  2. Arahkan kursor ke foto profil Anda di pojok kanan atas dan klik Log Out, atau buka URL login Pengguna RAM yang telah disalin di jendela browser baru.

  3. Klik Log on with an enterprise IdP account. Anda akan diarahkan ke halaman login Shibboleth.企业账户登录

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

    Anda akan secara otomatis login melalui SSO dan diarahkan ke halaman utama konsol Alibaba Cloud.

Mulai SSO dari Shibboleth

  1. Akses https://<your-server-address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.

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

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

    Anda akan secara otomatis login melalui SSO dan diarahkan ke halaman utama konsol Alibaba Cloud.

FAQ

Jika Anda mengalami masalah selama verifikasi, periksa /opt/shibboleth-idp/logs/idp-process.log untuk mengetahui penyebabnya. Masalah umum meliputi:

Error login meskipun kredensial benar

Periksa pesan error di /opt/shibboleth-idp/logs/idp-process.log. Jika error terkait ValidateUsernamePassword, verifikasi konfigurasi koneksi LDAP dan penerapannya. Pastikan semua kode yang diperlukan telah di-uncomment dan bebas dari spasi tambahan.

Tidak ada respons setelah login, dengan error unable to connect to the ldap.

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

Error setelah dialihkan ke Alibaba Cloud saat login:The NameID is missing.

Verifikasi bahwa bidang mail telah dipetakan dengan benar sebagai atribut di Langkah 3: Konfigurasikan atribut pengguna yang dikembalikan oleh Shibboleth dan bahwa NameID telah dikonfigurasi dengan benar di Langkah 4: Konfigurasikan SAML NameID.

Mengakseshttps://<your server address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID> menampilkan Unsupported Request.

Verifikasi bahwa entityId telah dikonfigurasi dengan benar. entityId harus konsisten di seluruh metadata dalam folder metadata, attribute-filter.xml, dan relying-party.xml.

Error saat dialihkan ke Alibaba Cloud setelah login: The response signature is invalid.

Unggah ulang file metadata Shibboleth ke Alibaba Cloud.