Topik ini menjelaskan cara mengonfigurasi single sign-on (SSO) dari Shibboleth ke CloudSSO.
Persiapan
Instal Shibboleth, Apache Tomcat, dan server yang diautentikasi menggunakan Lightweight Directory Access Protocol (LDAP).
Konfigurasi Shibboleth yang dijelaskan dalam topik ini adalah saran dan hanya digunakan untuk membantu Anda memahami proses SSO end-to-end dari Shibboleth ke Alibaba Cloud. Alibaba Cloud tidak menyediakan layanan konsultasi untuk konfigurasi Shibboleth.
Langkah 1: Unduh file metadata SAML SP dari Alibaba Cloud
Masuk ke Konsol CloudSSO.
Di panel navigasi sebelah kiri, klik Settings.
Di bagian SSO Logon, unduh file metadata penyedia layanan (SP) Security Assertion Markup Language (SAML) dan simpan sebagai
/opt/shibboleth-idp/metadata/aliyun-cloudsso-metadata.xml.Simpan
Entity IDdari SP untuk digunakan selanjutnya.
Langkah 2: Daftarkan Alibaba Cloud dengan Shibboleth
Konfigurasikan file metadata yang diperoleh di Langkah 1: Unduh File Metadata SAML SP dari Alibaba Cloud dalam file /opt/shibboleth-idp/conf/metadata-providers.xml untuk mendaftarkan Alibaba Cloud dengan Shibboleth.
<!--
<MetadataProvider id="LocalMetadata" xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/>
-->
<!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan ganti kode tersebut dengan kode yang ditampilkan pada baris berikutnya. -->
<MetadataProvider id="AliyunMetadata" xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/aliyun-cloudsso-metadata.xml"/>Langkah 3: Konfigurasikan atribut pengguna yang dikembalikan oleh Shibboleth
Ubah file
/opt/shibboleth/conf/services.xml.File konfigurasi asli berisi bidang
attribute-resolver.xmldan tidak menyediakan informasi konfigurasi lengkap. Ganti bidang tersebut denganattribute-resolver-full.xmluntuk memberikan informasi konfigurasi lengkap.<value>%{idp.home}/conf/attribute-resolver.xml</value> <!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan ganti kode tersebut dengan kode yang ditampilkan pada baris berikutnya. --> <value>%{idp.home}/conf/attribute-resolver-full.xml</value>Ubah file
/opt/shibboleth/conf/attribute-resolver-full.xml.Konfigurasikan atribut pengguna yang dikembalikan oleh Shibboleth dalam file /opt/shibboleth/conf/attribute-resolver-full.xml. Dalam contoh ini, bidang
maildigunakan sebagai atribut pengguna.<!-- ========================================== --> <!-- Definisi Atribut --> <!-- ========================================== --> <!-- Skema: Atribut skema inti--> <!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan tambahkan kode yang ditampilkan pada baris berikutnya. --> <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>Baca informasi konfigurasi dalam /opt/shibboleth/conf/ldap.properties pada file
/opt/shibboleth/conf/attribute-resolver-full.xmluntuk menetapkan koneksi ke server 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}" ... </DataConnector> --> <!-- Temukan kode yang ditampilkan pada baris sebelumnya dalam file dan ganti kode tersebut dengan kode yang ditampilkan pada baris berikutnya. --> <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>
Tambahkan filter atribut ke file
/opt/shibboleth/conf/attribute-filter.xml.Ganti atribut
valuedalam tagPolicyRequirementRuledenganEntity IDyang diperoleh di Langkah 1: Unduh File 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 yang ditampilkan pada baris sebelumnya dalam file dan tambahkan kode yang ditampilkan pada baris berikutnya. --> <AttributeFilterPolicy id="aliyun"> <PolicyRequirementRule xsi:type="Requester" value="[entityID]" /> <AttributeRule attributeID="mail"> <PermitValueRule xsi:type="ANY" /> </AttributeRule> </AttributeFilterPolicy>
Langkah 4: Konfigurasikan atribut NameID dalam respons SAML
Konfigurasikan atribut NameID dalam file
/opt/shibboleth/conf/relying-party.xml.Ganti atribut
relyingPartyIdsdalam tagbeandenganEntity IDyang diperoleh di Langkah 1: Unduh File 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 kode yang ditampilkan pada baris sebelumnya dalam file dan ganti kode tersebut dengan kode yang ditampilkan pada baris berikutnya. --> <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>Konfigurasikan metode pembuatan atribut NameID dalam file
/opt/shibboleth/conf/saml-nameid.xml.<!-- Temukan kode berikut. Beri komentar pada kode agar konfigurasi berlaku.--> <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'} }" />Konfigurasikan informasi tentang atribut NameID dalam
/opt/shibboleth/conf/saml-nameid.properties.idp.nameid.saml2.default = urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress idp.persistentId.useUnfilteredAttributes = true idp.persistentId.encoding = BASE32
Langkah 5: Peroleh file metadata SAML IdP di Shibboleth
Mulai ulang Apache Tomcat agar konfigurasi sebelumnya diterapkan.
Akses
https://<Alamat IP server LDAP>/idp/shibbolethdan simpan file metadata ke komputer Anda.
Langkah 6: Aktifkan SSO di Konsol CloudSSO
Di panel navigasi sebelah kiri Konsol CloudSSO, klik Settings.
Di bagian SSO Logon halaman Pengaturan, klik Configure IdP.
Dalam kotak dialog Configure IdP, pilih opsi Upload Metadata File.
Klik Upload File untuk mengunggah file metadata yang diperoleh di Langkah 5: Peroleh File Metadata SAML IdP di Shibboleth.
Aktifkan saklar SSO untuk mengaktifkan SSO.
CatatanSetelah SSO diaktifkan, log masuk menggunakan nama pengguna-kata sandi secara otomatis dinonaktifkan. SSO berlaku untuk semua pengguna. Setelah mengaktifkan SSO, semua pengguna harus menggunakan metode log masuk SSO.
Langkah 7: Buat pengguna CloudSSO di Konsol CloudSSO
Di Konsol CloudSSO, buat pengguna CloudSSO yang memiliki nama yang sama dengan pengguna di Shibboleth.
Di panel navigasi sebelah kiri Konsol CloudSSO, pilih .
Di halaman User, klik Create User.
Di panel Buat Pengguna, konfigurasikan Username.
Dalam contoh ini, nama pengguna
testUser@testdomain.alicloud.comdigunakan.Aktifkan Status.
Klik Close.
(Opsional) Langkah 8: Berikan izin kepada pengguna CloudSSO
Jika Anda ingin pengguna CloudSSO mengakses sumber daya tertentu dalam anggota yang ditentukan di direktori sumber daya setelah pengguna masuk ke portal pengguna menggunakan metode SSO, Anda harus membuat konfigurasi akses yang mendefinisikan izin akses. Kemudian, tetapkan izin akses pada anggota kepada pengguna.
Buat konfigurasi akses dan tentukan kebijakan di Konsol CloudSSO.
Untuk informasi lebih lanjut, lihat Buat Konfigurasi Akses.
Tetapkan izin akses pada akun di direktori sumber daya Anda kepada pengguna CloudSSO.
Untuk informasi lebih lanjut, lihat Tetapkan Izin Akses pada Akun di Direktori Sumber Daya.
Verifikasi hasil konfigurasi
Setelah menyelesaikan konfigurasi sebelumnya, Anda dapat memulai SSO dari Alibaba Cloud atau Shibboleth.
Mulai SSO dari Alibaba Cloud
Masuk ke Konsol CloudSSO. Buka halaman Overview dan salin URL yang digunakan untuk masuk ke portal pengguna.
Buka browser, tempelkan URL yang disalin, lalu tekan Enter.
Klik Redirect. Anda akan diarahkan ulang ke halaman masuk Shibboleth.

Di halaman masuk Shibboleth, masukkan nama pengguna testUser dan kata sandinya lalu klik Log On.
Setelah berhasil masuk, Anda akan diarahkan ulang ke portal pengguna.
Akses sumber daya Alibaba Cloud yang Anda miliki izinnya.
Mulai SSO dari Shibboleth
Akses
https://<Alamat IP server LDAP>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.Ganti
<entityID>denganEntity IDyang diperoleh di Langkah 1: Unduh File Metadata SAML SP dari Alibaba Cloud.Di halaman masuk Shibboleth, masukkan nama pengguna testUser dan kata sandinya lalu klik Log On.
Setelah berhasil masuk, Anda akan diarahkan ulang ke portal pengguna.
Akses sumber daya Alibaba Cloud yang Anda miliki izinnya.
FAQ
Jika masalah terjadi saat memverifikasi hasil konfigurasi, Anda dapat mengidentifikasi masalah menggunakan file /opt/shibboleth-idp/logs/idp-process.log. Bagian berikut memberikan jawaban atas beberapa pertanyaan yang sering diajukan:
Apa yang harus saya lakukan jika pengecualian terjadi saat saya menggunakan nama pengguna dan kata sandi yang valid untuk masuk ke Shibboleth?
Lihat pesan kesalahan dalam file /opt/shibboleth-idp/logs/idp-process.log. Jika pesan kesalahan ValidateUsernamePassword ditampilkan, periksa konfigurasi koneksi dan penyebaran server LDAP Anda. Pastikan kode yang harus dikomentari telah dikomentari dan tidak ada spasi ekstra.
Apa yang harus saya lakukan jika sistem tidak merespons saat saya masuk ke Shibboleth dan pesan kesalahan tidak dapat terhubung ke ldap ditampilkan?
Periksa apakah konfigurasi koneksi server LDAP Anda dalam file ldap.properties dan attribute-resolver-full.xml benar.
Apa yang harus saya lakukan jika pesan kesalahan NameID tidak ada ditampilkan saat saya diarahkan ulang ke Alibaba Cloud?
Periksa apakah bidang mail dipetakan dengan benar sebagai atribut di Langkah 3: Konfigurasikan Atribut Pengguna yang Dikembalikan oleh Shibboleth. Periksa juga apakah atribut NameID dikonfigurasi dengan benar di Langkah 4: Konfigurasikan Atribut NameID dalam Respons SAML.
Apa yang harus saya lakukan jika pesan kesalahan Permintaan Tidak Didukung ditampilkan saat saya mengakses https://<Alamat IP server LDAP Anda>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>?
Periksa apakah bidang entityId ditentukan dengan benar. Pastikan nilai bidang entityId dalam file metadata, file attribute-filter.xml, dan file relying-party.xml sama.
Apa yang harus saya lakukan jika pesan kesalahan Tanda tangan respons tidak valid ditampilkan saat saya diarahkan ulang ke Alibaba Cloud?
Unggah ulang file metadata Shibboleth ke Alibaba Cloud.