All Products
Search
Document Center

Resource Access Management:Siapkan SSO berbasis pengguna dengan Shibboleth

Last Updated:Jul 18, 2026

Contoh ini memandu Anda melalui proses end-to-end untuk mengonfigurasi Single Sign-On (SSO) berbasis pengguna antara Shibboleth dan Alibaba Cloud.

Sebelum memulai

  1. Instal Shibboleth, Tomcat, dan server Lightweight Directory Access Protocol (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 detail akun tersebut.

    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 tujuan demonstrasi dan menggambarkan proses end-to-end penyiapan 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 (SP) 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 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 elemen 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 mengonfigurasi NameID untuk Alibaba Cloud.

    Ganti atribut relyingPartyIds dalam elemen 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 Anda mengaktifkannya, semua Pengguna RAM harus login menggunakan SSO. Jika Anda mengonfigurasi SSO sebagai Pengguna RAM, biarkan fitur ini dinonaktifkan hingga Anda membuat Pengguna RAM yang diperlukan. Hal ini mencegah terkuncinya akses akibat kesalahan konfigurasi. Sebagai alternatif, gunakan Akun Alibaba Cloud Anda untuk mengonfigurasi SSO.

  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 nama domain tambahan 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 dialihkan ke halaman login Shibboleth.

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

    Anda akan secara otomatis login melalui SSO dan dialihkan 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 kata sandi, lalu klik Log On.

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

FAQ

Jika Anda mengalami masalah selama verifikasi, periksa /opt/shibboleth-idp/logs/idp-process.log untuk detailnya. 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 di Alibaba Cloud.