Konfigurasikan single sign-on (SSO) dari Shibboleth ke CloudSSO.
Sebelum memulai
Instal Shibboleth, Tomcat, dan server LDAP.
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
-
Masuk ke CloudSSO console.
-
Pada panel navigasi di sebelah kiri, klik Settings.
-
Pada bagian SSO Logon, unduh file metadata penyedia layanan (SP) dan simpan ke
/opt/shibboleth-idp/metadata/aliyun-cloudsso-metadata.xml.Simpan
Entity IDdari 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
-
Ubah file
/opt/shibboleth/conf/services.xml.Konfigurasi default menggunakan file
attribute-resolver.xml, yang tidak mencukupi. Untuk mengaktifkan konfigurasi lengkap, ganti denganattribute-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> -
Ubah file
/opt/shibboleth/conf/attribute-resolver-full.xml.-
Dalam file tersebut, konfigurasikan atribut mana yang dikembalikan bersama informasi pengguna. Pada contoh ini, atribut
maildikembalikan.<!-- ========================================== --> <!-- 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> -
Dalam file tersebut, baca pengaturan dari
/opt/shibboleth/conf/ldap.propertiesuntuk 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>
-
-
Ubah file
/opt/shibboleth/conf/attribute-filter.xmluntuk menambahkan filter atribut.Pada tag
PolicyRequirementRule, ganti atributvaluedenganentityIDAlibaba 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
-
Ubah file
/opt/shibboleth/conf/relying-party.xmluntuk mengonfigurasi NameID untuk Alibaba Cloud.Pada tag
bean, ganti atributrelyingPartyIdsdenganentityIDAlibaba 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> -
Ubah file
/opt/shibboleth/conf/saml-nameid.xmluntuk 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'} }" /> -
Ubah file
/opt/shibboleth/conf/saml-nameid.propertiesuntuk 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
-
Mulai ulang Tomcat untuk menerapkan perubahan Anda.
-
Akses
https://<your_server_address>/idp/shibbolethdan simpan file metadata ke komputer lokal Anda.
Langkah 6: Aktifkan SSO di CloudSSO
-
Pada panel navigasi di sebelah kiri CloudSSO console, klik Settings.
-
Pada bagian SSO Logon, klik Configure IdP.
-
Pada kotak dialog Configure IdP, pilih Upload Metadata File.
-
Klik Upload File dan unggah file metadata IdP dari Langkah 5: Dapatkan metadata SAML IdP dari Shibboleth.
-
Nyalakan sakelar SSO untuk mengaktifkan SSO.
CatatanSetelah 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.
-
Pada panel navigasi di sebelah kiri CloudSSO console, pilih .
-
Pada halaman User, klik Create User.
-
Pada panel Create User, masukkan Username.
Pada contoh ini, username-nya adalah
testUser@testdomain.alicloud.com. -
Atur status pengguna menjadi Enabled.
-
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.
-
Buat permission set di CloudSSO untuk menentukan kebijakan.
Untuk informasi selengkapnya, lihat Buat permission set.
-
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
-
Pada halaman Overview di CloudSSO console, salin URL logon pengguna.
-
Buka URL tersebut di browser baru.
-
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.
-
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.
-
Akses resource di akun anggota yang memiliki izin untuk Anda.
-
-
Memulai SSO dari Shibboleth
-
Akses
https://<your_server_address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.Ganti
<entityID>dalam URL denganentityIDAlibaba Cloud dari Langkah 1: Dapatkan metadata SAML SP dari Alibaba Cloud. -
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.
-
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.