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
-
Instal Shibboleth, Tomcat, dan server Lightweight Directory Access Protocol (LDAP).
-
Konfigurasikan server LDAP.
Untuk contoh ini, tambahkan akun administrator ke LDAP dengan distinguished name (DN)
uid=admin,ou=systemdan passwordsecret.Tambahkan akun uji coba ke LDAP dengan DN
cn=Test User,ou=users,dc=wimpi,dc=netdan passwordsecret. Detail akun ditampilkan pada gambar berikut.
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.
-
-
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)
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
-
Login ke Konsol RAM sebagai administrator RAM.
-
Di panel navigasi sebelah kiri, pilih .
-
Klik tab User-based SSO. Di bagian SAML Service Provider Metadata URL, salin URL metadata untuk Akun Alibaba Cloud Anda.
-
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.CatatanCatat nilai atribut
entityIDdari elemenEntityDescriptor. 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
-
Ubah file
/opt/shibboleth/conf/services.xml.Konfigurasi default menggunakan
attribute-resolver.xml, yang memiliki pengaturan terbatas. Ganti denganattribute-resolver-full.xmluntuk 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> -
Ubah file
/opt/shibboleth/conf/attribute-resolver-full.xml.-
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> -
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>
-
-
Ubah file
/opt/shibboleth/conf/attribute-filter.xmluntuk menambahkan filter atribut.Ganti atribut
valuedalam tagPolicyRequirementRuledenganentityIDAlibaba 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
-
Ubah file
/opt/shibboleth/conf/relying-party.xmluntuk menyiapkan konfigurasi NameID untuk Alibaba Cloud.Ganti atribut
relyingPartyIdsdalam tagbeandenganentityIDAlibaba 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> -
Ubah file
/opt/shibboleth/conf/saml-nameid.xmluntuk 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'} }" /> -
Ubah file
/opt/shibboleth/conf/saml-nameid.propertiesuntuk 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
-
Mulai ulang Tomcat untuk menerapkan konfigurasi.
-
Akses
https://<your-server-address>/idp/shibbolethdan simpan file metadata ke komputer lokal Anda.
Langkah 6: Aktifkan SSO berbasis pengguna di Alibaba Cloud
-
Di panel navigasi sebelah kiri Konsol RAM, pilih .
-
Klik tab User-based SSO. Di bagian SSO Status, klik Enabled.
CatatanSSO 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.
-
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.
-
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
-
Di panel navigasi sebelah kiri Konsol RAM, pilih .
-
Di halaman Users, klik Create User.
-
Di halaman Create User, masukkan Logon Name dan Display Name.
CatatanPastikan awalan nama logon Pengguna RAM sesuai dengan awalan email pengguna di Shibboleth. Dalam contoh ini, awalannya adalah testUser.
-
Di bagian Access Mode, pilih Console Access dan atur kata sandi logon serta parameter lainnya.
-
Klik OK.
Verifikasi hasil
Setelah menyelesaikan konfigurasi, Anda dapat memulai login SSO baik dari Alibaba Cloud maupun Shibboleth.
Mulai SSO dari Alibaba Cloud
-
Di halaman Overview Konsol RAM, salin URL login untuk Pengguna RAM.
-
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.
-
Klik Log on with an enterprise IdP account. Anda akan diarahkan ke halaman login Shibboleth.

-
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
-
Akses
https://<your-server-address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.<entityID>dalam URL adalahentityIDAlibaba Cloud dari Langkah 1: Dapatkan metadata SAML SP dari Alibaba Cloud. -
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.