全部产品
Search
文档中心

Resource Access Management:Contoh: Implementasi SSO Berbasis Pengguna dengan Shibboleth

更新时间:Nov 10, 2025

Topik ini memberikan contoh cara mengimplementasikan single sign-on (SSO) berbasis pengguna antara Shibboleth dan Alibaba Cloud. Contoh ini membantu Anda memahami proses konfigurasi end-to-end untuk SSO antara penyedia identitas perusahaan (IdP) Anda dan Alibaba Cloud.

Persiapan

  1. Instal Shibboleth, Tomcat, dan server LDAP.

  2. Konfigurasikan server LDAP.

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

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

    image.png

    Bidang informasi pengguna:

    • mail: Sesuai dengan nama logon dari Pengguna RAM.

    • memberof: Sesuai dengan nama Peran RAM.

    • samaccountname: Nama pengguna untuk logon ke Shibboleth.

    • userpassword: Kata sandi logon.

  3. Konfigurasikan Shibboleth untuk terhubung ke server LDAP.

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

    # Mode otentikasi 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 logon ke LDAP.
    idp.authn.LDAP.userFilter= (samaccountname={user})
    
    # Akun admin dan kata sandi
    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 adalah saran. Mereka disediakan hanya untuk membantu Anda memahami proses logon SSO end-to-end. Alibaba Cloud tidak menyediakan layanan konsultasi untuk konfigurasi Shibboleth.

Langkah 1: Dapatkan metadata Penyedia Layanan SAML dari Alibaba Cloud

  1. Masuk ke Konsol Resource Access Management (RAM) sebagai administrator RAM.

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

  3. Pada tab User-based SSO, di bagian SAML Service Provider Metadata, salin URL metadata untuk Akun Alibaba Cloud saat ini.

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

    Catatan

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

Langkah 2: Daftarkan Alibaba Cloud dengan Shibboleth

Konfigurasikan file /opt/shibboleth-idp/conf/metadata-providers.xml. Tentukan file metadata yang Anda peroleh di Langkah 1: Dapatkan Metadata Penyedia Layanan SAML dari Alibaba Cloud untuk mendaftarkan Alibaba Cloud dengan Shibboleth.

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

<!-- Temukan kode yang dikomentari di atas dan gantikan 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.

    Versi aslinya menggunakan file konfigurasi attribute-resolver.xml, yang tidak berisi informasi konfigurasi yang cukup. Anda harus mengaktifkan konfigurasi penuh dengan menggantinya dengan attribute-resolver-full.xml.

    <value>%{idp.home}/conf/attribute-resolver.xml</value>
    <!-- Temukan kode di atas dan gantikan 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 ini, konfigurasikan atribut yang akan dikembalikan dalam informasi pengguna. Dalam contoh ini, bidang mail dipilih sebagai atribut yang dikembalikan.

      <!-- ========================================== -->
      <!--      Definisi Atribut                 -->
      <!-- ========================================== -->
      
      <!-- Skema: Atribut skema inti-->
      
      <!-- Temukan 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 ini, gunakan informasi yang dikonfigurasikan di /opt/shibboleth/conf/ldap.properties untuk membuat koneksi LDAP.

      <!-- Contoh Konektor LDAP -->
      <!--
      	<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 kode contoh di atas dan gantikan 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.

    Gantikan atribut value dalam tag PolicyRequirementRule dengan entityID Alibaba Cloud dari Langkah 1: Dapatkan Metadata Penyedia Layanan SAML 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 NameID untuk respons SAML

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

    Gantikan atribut relyingPartyIds dalam tag bean dengan entityID Alibaba Cloud dari Langkah 1: Dapatkan Metadata Penyedia Layanan SAML 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 kode yang dikomentari di atas dan gantikan 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 NameID dibuat.

    <!-- Temukan dua blok kode di bawah ini 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 IdP SAML dari Shibboleth

  1. Mulai ulang Tomcat untuk menerapkan konfigurasi.

  2. Akses https:///<Alamat server Anda>/idp/shibboleth dan simpan file metadata secara lokal.

Langkah 6: Aktifkan SSO berbasis pengguna di Alibaba Cloud

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

  2. Pada tab User-based SSO, di bagian SSO Status, klik Enabled.

    Catatan

    SSO berbasis pengguna adalah fitur global. Setelah Anda mengaktifkannya, semua Pengguna RAM harus menggunakan SSO untuk masuk. Jika Anda sedang mengonfigurasi fitur ini sebagai Pengguna RAM, biarkan tetap dinonaktifkan untuk sementara. Anda harus membuat Pengguna RAM terlebih dahulu untuk menghindari terkunci karena kesalahan konfigurasi. Anda juga dapat menggunakan Akun Alibaba Cloud Anda untuk melakukan konfigurasi dan menghindari masalah ini.

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

  4. Di bagian Auxiliary Domain, klik Edit. Kemudian, aktifkan domain tambahan dan atur ke akhiran email dari nama pengguna Shibboleth.

    Dalam contoh ini, domain tersebut adalah testdomain.alicloud.com.

Langkah 7: Buat Pengguna RAM di Alibaba Cloud

  1. Di panel navigasi 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 bahwa awalan nama logon Pengguna RAM sama dengan awalan email dari nama pengguna di Shibboleth. Dalam contoh ini, awalannya adalah testUser.

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

  5. Klik OK.

Verifikasi hasil

Setelah Anda menyelesaikan konfigurasi, Anda dapat memulai logon SSO dari Alibaba Cloud atau Shibboleth.

Mulai logon dari Alibaba Cloud

  1. Anda dapat menyalin URL logon Pengguna RAM dari halaman Overview Konsol RAM.

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

  3. Klik Logon With Enterprise Account. Anda akan dialihkan secara otomatis ke halaman logon Shibboleth.企业账户登录

  4. Di halaman logon Shibboleth, masukkan nama pengguna (testUser) dan kata sandi, lalu klik Logon.

    Sistem secara otomatis menyelesaikan logon SSO dan mengarahkan Anda ke halaman utama Konsol Alibaba Cloud.

Mulai logon dari Shibboleth

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

    <entityID> dalam URL adalah entityID Alibaba Cloud dari Langkah 1: Dapatkan Metadata Penyedia Layanan SAML dari Alibaba Cloud.

  2. Di halaman logon Shibboleth, masukkan nama pengguna (testUser) dan kata sandi, lalu klik Logon.

    Sistem secara otomatis menyelesaikan logon SSO dan mengarahkan Anda ke halaman utama Konsol Alibaba Cloud.

FAQ

Jika Anda mengalami masalah selama verifikasi, Anda dapat melihat file /opt/shibboleth-idp/logs/idp-process.log untuk menganalisis penyebabnya. Daftar berikut menjelaskan masalah umum:

Nama pengguna dan kata sandi Shibboleth benar, tetapi pengecualian dilaporkan setelah logon.

Periksa pesan kesalahan di /opt/shibboleth-idp/logs/idp-process.log. Jika kesalahan terkait dengan ValidateUsernamePassword, periksa konfigurasi dan penerapan koneksi LDAP. Pastikan bahwa komentar telah dihapus dan tidak ada spasi ekstra.

Sistem tidak merespons setelah logon dan melaporkan tidak dapat terhubung ke ldap.

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

Setelah logon, Anda dialihkan ke Alibaba Cloud dan pesan NameID hilang dilaporkan.

Periksa apakah bidang mail dipetakan dengan benar sebagai atribut di Langkah 3: Konfigurasikan Atribut Pengguna yang Dikembalikan oleh Shibboleth. Periksa apakah atribut NameID dikonfigurasi dengan benar di Langkah 4: Konfigurasikan Atribut NameID dalam Respons SAML.

Saat Anda mengakses https://<Alamat server Anda>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>, pesan Permintaan Tidak Didukung dilaporkan.

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

Setelah logon, Anda dialihkan ke Alibaba Cloud dan pesan Tanda tangan tanggapan tidak valid dilaporkan.

Unggah file metadata Shibboleth ke Alibaba Cloud lagi.