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
Instal Shibboleth, Tomcat, dan server LDAP.
Konfigurasikan server LDAP.
Untuk contoh ini, tambahkan akun administrator ke LDAP. Atur DN menjadi
uid=admin,ou=systemdan kata sandi menjadisecret.Tambahkan akun uji ke LDAP. Atur DN menjadi
cn=Test User,ou=users,dc=wimpi,dc=netdan kata sandi menjadisecret. Gambar berikut menunjukkan detailnya.
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.
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)
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
Masuk ke Konsol Resource Access Management (RAM) sebagai administrator RAM.
Di panel navigasi kiri, pilih .
Pada tab User-based SSO, di bagian SAML Service Provider Metadata, salin URL metadata untuk Akun Alibaba Cloud saat ini.
Buka URL yang disalin di jendela browser baru. Simpan file XML metadata sebagai
/opt/shibboleth-idp/metadata/aliyun-ram-user-metadata.xml.CatatanFile XML metadata berisi informasi akses untuk Alibaba Cloud sebagai Penyedia Layanan (SP) SAML. Catat nilai atribut
entityIDdalam elemenEntityDescriptor. 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
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 denganattribute-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>Ubah file
/opt/shibboleth/conf/attribute-resolver-full.xml.Dalam file ini, konfigurasikan atribut yang akan dikembalikan dalam informasi pengguna. Dalam contoh ini, bidang
maildipilih 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>Dalam file ini, gunakan informasi yang dikonfigurasikan di
/opt/shibboleth/conf/ldap.propertiesuntuk 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>
Ubah file
/opt/shibboleth/conf/attribute-filter.xmluntuk menambahkan filter atribut.Gantikan atribut
valuedalam tagPolicyRequirementRuledenganentityIDAlibaba 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
Ubah file
/opt/shibboleth/conf/relying-party.xmluntuk membuat konfigurasi NameID untuk Alibaba Cloud.Gantikan atribut
relyingPartyIdsdalam tagbeandenganentityIDAlibaba 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>Ubah file
/opt/shibboleth/conf/saml-nameid.xmluntuk 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'} }" />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 IdP SAML dari Shibboleth
Mulai ulang Tomcat untuk menerapkan konfigurasi.
Akses
https:///<Alamat server Anda>/idp/shibbolethdan simpan file metadata secara lokal.
Langkah 6: Aktifkan SSO berbasis pengguna di Alibaba Cloud
Di panel navigasi kiri Konsol RAM, pilih .
Pada tab User-based SSO, di bagian SSO Status, klik Enabled.
CatatanSSO 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.
Di bagian Metadata File, klik Upload Metadata dan unggah file metadata IdP yang diperoleh di Langkah 5: Dapatkan Metadata IdP SAML dari Shibboleth.
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
Di panel navigasi kiri Konsol RAM, pilih .
Di halaman Users, klik Create User.
Di halaman Create User, masukkan Logon Name dan Display Name.
CatatanPastikan bahwa awalan nama logon Pengguna RAM sama dengan awalan email dari nama pengguna di Shibboleth. Dalam contoh ini, awalannya adalah testUser.
Di bagian Access Mode, pilih Console Access dan atur parameter seperti kata sandi logon.
Klik OK.
Verifikasi hasil
Setelah Anda menyelesaikan konfigurasi, Anda dapat memulai logon SSO dari Alibaba Cloud atau Shibboleth.
Mulai logon dari Alibaba Cloud
Anda dapat menyalin URL logon Pengguna RAM dari halaman Overview Konsol RAM.
Arahkan kursor ke foto profil di pojok kanan atas dan klik Log Out, atau buka URL logon Pengguna RAM yang disalin di browser baru.
Klik Logon With Enterprise Account. Anda akan dialihkan secara otomatis ke halaman logon Shibboleth.

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
Akses
https://<Alamat server Anda>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.<entityID>dalam URL adalahentityIDAlibaba Cloud dari Langkah 1: Dapatkan Metadata Penyedia Layanan SAML dari Alibaba Cloud.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.