Bu konuda, Shibboleth'ten CloudSSO'ya tek oturum açma (SSO) yapılandırmasına ilişkin bir örnek sunulmaktadır.
Başlamadan önce
Shibboleth, Tomcat ve bir LDAP sunucusu yükleyin.
Bu konudaki Shibboleth yapılandırmaları yalnızca uçtan uca yapılandırma sürecini anlamanıza yardımcı olmak amacıyla sunulmuştur. Alibaba Cloud, Shibboleth yapılandırması için danışmanlık hizmeti vermemektedir.
1. Adım: Alibaba Cloud'dan SAML SP meta verilerini alma
CloudSSO konsolu üzerinde oturum açın.
Sol gezinme bölmesinde Settings öğesine tıklayın.
-
SSO Logon bölümünde hizmet sağlayıcısı (SP) meta veri dosyasını indirin ve
/opt/shibboleth-idp/metadata/aliyun-cloudsso-metadata.xmlkonumuna kaydedin.SP'nin
Entity IDdeğerini daha sonra kullanmak üzere kaydedin.
2. Adım: Alibaba Cloud'u Shibboleth'e kaydetme
/opt/shibboleth-idp/conf/metadata-providers.xml dosyasını düzenleyerek 1. Adım: Alibaba Cloud'dan SAML SP meta verilerini alma bölümündeki meta veri dosyasına işaret edin ve Alibaba Cloud'u Shibboleth'te güvenilir bir hizmet sağlayıcı olarak kaydedin.
<!--
<MetadataProvider id="LocalMetadata" xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/>
-->
<!-- Replace the preceding commented code with the following code. -->
<MetadataProvider id="AliyunMetadata" xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/aliyun-cloudsso-metadata.xml"/>
3. Adım: Shibboleth kullanıcı niteliklerini yapılandırma
-
/opt/shibboleth/conf/services.xmldosyasını değiştirin.Varsayılan
attribute-resolver.xmldosyası gerekli tüm nitelik tanımlarını içermez. Tam yapılandırmayı etkinleştirmek için bu dosyayıattribute-resolver-full.xmlile değiştirin.<value>%{idp.home}/conf/attribute-resolver.xml</value> <!-- Replace the preceding code with the following code. --> <value>%{idp.home}/conf/attribute-resolver-full.xml</value> -
/opt/shibboleth/conf/attribute-resolver-full.xmldosyasını değiştirin.-
Kullanıcı bilgileriyle birlikte döndürülecek nitelikleri yapılandırın. Bu örnekte
mailniteliği döndürülür.<!-- ========================================== --> <!-- Attribute Definitions --> <!-- ========================================== --> <!-- Schema: Core schema attributes--> <!-- Add the following code after the preceding comments. --> <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> -
/opt/shibboleth/conf/ldap.propertieskonumundan ayarları okuyarak LDAP veri bağlayıcısını yapılandırın.<!-- 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> --> <!-- Replace the preceding example code with the following code. --> <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>
-
-
Bir nitelik filtresi eklemek için
/opt/shibboleth/conf/attribute-filter.xmldosyasını değiştirin.PolicyRequirementRuleetiketindevalueniteliğini 1. Adım: Alibaba Cloud'dan SAML SP meta verilerini alma bölümündeki Alibaba CloudentityIDdeğeriyle değiştirin.<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"> <!-- Add the following code after the preceding code. --> <AttributeFilterPolicy id="aliyun"> <PolicyRequirementRule xsi:type="Requester" value="[entityID]" /> <AttributeRule attributeID="mail"> <PermitValueRule xsi:type="ANY" /> </AttributeRule> </AttributeFilterPolicy>
4. Adım: SAML NameID yapılandırma
-
Alibaba Cloud için NameID yapılandırmak üzere
/opt/shibboleth/conf/relying-party.xmldosyasını değiştirin.beanetiketinderelyingPartyIdsniteliğini 1. Adım: Alibaba Cloud'dan SAML SP meta verilerini alma bölümündeki Alibaba CloudentityIDdeğeriyle değiştirin.<!-- 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> --> <!-- Replace the preceding commented code with the following code. --> <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> -
NameID oluşturmayı yapılandırmak için
/opt/shibboleth/conf/saml-nameid.xmldosyasını değiştirin.<!-- Uncomment the following two beans to enable them. --> <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'} }" /> -
NameID özelliklerini yapılandırmak için
/opt/shibboleth/conf/saml-nameid.propertiesdosyasını değiştirin.idp.nameid.saml2.default = urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress idp.persistentId.useUnfilteredAttributes = true idp.persistentId.encoding = BASE32
5. Adım: Shibboleth'ten SAML IdP meta verilerini alma
Değişikliklerinizi uygulamak için Tomcat'i yeniden başlatın.
https://<your_server_address>/idp/shibbolethadresine erişin ve meta veri dosyasını yerel bilgisayarınıza kaydedin.
6. Adım: CloudSSO'da SSO'yu etkinleştirme
CloudSSO konsolunun sol gezinme bölmesinde Settings öğesine tıklayın.
SSO Logon bölümünde Configure IdP seçeneğine tıklayın.
Configure IdP iletişim kutusunda Upload Metadata File seçeneğini belirleyin.
Upload File seçeneğine tıklayın ve 5. Adım: Shibboleth'ten SAML IdP meta verilerini alma bölümündeki IdP meta veri dosyasını yükleyin.
-
SSO'yu etkinleştirmek için SSO anahtarını açın.
NotSSO oturum açmayı etkinleştirdiğinizde kullanıcı adı ve parola ile oturum açma devre dışı bırakılır. Bu durum, CloudSSO kullanıcılarının artık platform kimlik bilgileriyle oturum açamayacağı anlamına gelir. Etkinleştirildikten sonra tüm kullanıcılar kimlik sağlayıcınız üzerinden oturum açmalıdır.
7. Adım: CloudSSO'da kullanıcı oluşturma
Kullanıcı adı karşılık gelen Shibboleth kullanıcısıyla eşleşen bir CloudSSO kullanıcısı oluşturun.
CloudSSO konsolunun sol gezinme bölmesinde yolunu izleyin.
User sayfasında Create User seçeneğine tıklayın.
-
Create User panelinde bir Username girin.
Bu örnekte kullanıcı adı
testUser@testdomain.alicloud.comşeklindedir. Kullanıcı durumunu Etkin olarak ayarlayın.
Close seçeneğine tıklayın.
(İsteğe bağlı) 8. Adım: Kullanıcıya izin atama
Kullanıcıların SSO sonrası belirli Resource Directory üye hesaplarında bulunan kaynaklara erişmesini sağlamak için bir izin kümesi oluşturun ve kullanıcıya bu hesaplara erişim izni verin.
-
İlkeleri tanımlamak için CloudSSO'da bir izin kümesi oluşturun.
Daha fazla bilgi için bkz. İzin kümesi oluşturma.
-
Kullanıcıya üye hesaplara erişim izni verin.
Daha fazla bilgi için bkz. Üye hesaba erişim izni verme.
Sonucu doğrulama
SSO işlemini Alibaba Cloud veya Shibboleth üzerinden başlatabilirsiniz.
-
SSO'yu Alibaba Cloud üzerinden başlatma
CloudSSO konsolu'nin Overview sayfasında kullanıcı oturum açma URL'sini kopyalayın.
URL'yi yeni bir tarayıcıda açın.
Go seçeneğine tıklayın. Shibboleth oturum açma sayfasına yönlendirilirsiniz. Enterprise Account Login URL alanı önceden doldurulmuş olarak SSO Login sayfası görüntülenir. Kimlik sağlayıcı oturum açma sayfasına devam etmek için Go seçeneğine tıklayın.
-
Shibboleth oturum açma sayfasında kullanıcı adını (testUser) ve parolayı girin, ardından Log On seçeneğine tıklayın.
Kimlik doğrulama başarılı olduktan sonra CloudSSO kullanıcı portalına yönlendirilirsiniz.
İzniniz olan üye hesaplarında bulunan kaynaklara erişin.
-
SSO'yu Shibboleth üzerinden başlatma
-
https://<your_server_address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>adresine erişin.URL'deki
<entityID>değerini 1. Adım: Alibaba Cloud'dan SAML SP meta verilerini alma bölümündeki Alibaba CloudentityIDdeğeriyle değiştirin. -
Shibboleth oturum açma sayfasında kullanıcı adını (testUser) ve parolayı girin, ardından Log On seçeneğine tıklayın.
Kimlik doğrulama başarılı olduktan sonra CloudSSO kullanıcı portalına yönlendirilirsiniz.
İzniniz olan üye hesaplarında bulunan kaynaklara erişin.
-
SSS
Doğrulama sırasında sorunlarla karşılaşırsanız /opt/shibboleth-idp/logs/idp-process.log dosyasını kontrol edin. Aşağıda yaygın sorunlar ve çözümleri listelenmiştir:
Shibboleth oturum açma başarılı olduktan sonra hata oluşması
/opt/shibboleth-idp/logs/idp-process.log dosyasındaki hata iletisini kontrol edin. Hata ValidateUsernamePassword ile ilgiliyse LDAP bağlantı ayarlarınızı ve dağıtımınızı doğrulayın. Gerekli bölümlerin açıklamasını kaldırdığınızdan ve fazladan boşluk bırakmadığınızdan emin olun.
"unable to connect to the ldap" hatasıyla oturum açmanın başarısız olması
ldap.properties ve attribute-resolver-full.xml dosyalarındaki LDAP bağlantı ayarlarını kontrol edin.
Yönlendirme hatası: "The NameID is missing"
3. Adım: Shibboleth kullanıcı niteliklerini yapılandırma bölümünde kullanıcı bilgilerinden mail niteliğini doğru şekilde eşlediğinizden emin olun. Ayrıca 4. Adım: SAML NameID yapılandırma bölümünde NameID değerinin doğru şekilde yapılandırıldığını doğrulayın.
Erişim hatası: **https://<your_server_address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID> **adresinde "Unsupported Request" hatası
entityId değerinin metadata klasöründeki meta veri dosyası, attribute-filter.xml dosyası ve relying-party.xml dosyası olmak üzere üç konumda da tutarlı olduğundan emin olun.
Yönlendirme hatası: "The response signature is invalid"
Shibboleth meta veri dosyasını tekrar Alibaba Cloud'a yükleyin.