Cette rubrique présente un exemple de configuration de l'authentification unique (SSO) de Shibboleth vers CloudSSO.
Prérequis
Installez Shibboleth, Tomcat et un serveur LDAP.
Les configurations Shibboleth décrites dans cette rubrique sont fournies uniquement pour vous aider à comprendre le processus de configuration de bout en bout. Alibaba Cloud ne fournit pas de services de conseil pour la configuration de Shibboleth.
Étape 1 : Obtenir les métadonnées SAML SP depuis Alibaba Cloud
Connectez-vous à la console CloudSSO.
Dans le volet de navigation de gauche, cliquez sur Settings.
-
Dans la section SSO Logon, téléchargez le fichier de métadonnées du fournisseur de service (SP) et enregistrez-le dans
/opt/shibboleth-idp/metadata/aliyun-cloudsso-metadata.xml.Notez l'
Entity IDdu SP pour une utilisation ultérieure.
Étape 2 : Enregistrer Alibaba Cloud auprès de Shibboleth
Modifiez le fichier /opt/shibboleth-idp/conf/metadata-providers.xml afin qu'il pointe vers le fichier de métadonnées obtenu lors de l'Étape 1 : Obtenir les métadonnées SAML SP depuis Alibaba Cloud, puis enregistrez Alibaba Cloud comme fournisseur de service approuvé dans Shibboleth.
<!--
<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"/>
Étape 3 : Configurer les attributs utilisateur depuis Shibboleth
-
Modifiez le fichier
/opt/shibboleth/conf/services.xml.Le fichier
attribute-resolver.xmlpar défaut ne contient pas toutes les définitions d'attributs requises. Remplacez-le parattribute-resolver-full.xmlpour activer la configuration complète.<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> -
Modifiez le fichier
/opt/shibboleth/conf/attribute-resolver-full.xml.-
Configurez les attributs à retourner avec les informations utilisateur. Dans cet exemple, l'attribut
mailest retourné.<!-- ========================================== --> <!-- 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> -
Configurez le connecteur de données LDAP en lisant les paramètres depuis
/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}" ... </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>
-
-
Modifiez le fichier
/opt/shibboleth/conf/attribute-filter.xmlpour ajouter un filtre d'attributs.Dans la balise
PolicyRequirementRule, remplacez l'attributvaluepar l'entityIDAlibaba Cloud obtenu lors de l'Étape 1 : Obtenir les métadonnées SAML SP depuis 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"> <!-- 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>
Étape 4 : Configurer le NameID SAML
-
Modifiez le fichier
/opt/shibboleth/conf/relying-party.xmlpour configurer le NameID pour Alibaba Cloud.Dans la balise
bean, remplacez l'attributrelyingPartyIdspar l'entityIDAlibaba Cloud obtenu lors de l'Étape 1 : Obtenir les métadonnées SAML SP depuis 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> --> <!-- 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> -
Modifiez le fichier
/opt/shibboleth/conf/saml-nameid.xmlpour configurer la génération du NameID.<!-- 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'} }" /> -
Modifiez le fichier
/opt/shibboleth/conf/saml-nameid.propertiespour configurer les propriétés du NameID.idp.nameid.saml2.default = urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress idp.persistentId.useUnfilteredAttributes = true idp.persistentId.encoding = BASE32
Étape 5 : Obtenir les métadonnées SAML IdP depuis Shibboleth
Redémarrez Tomcat pour appliquer vos modifications.
Accédez à
https://<your_server_address>/idp/shibbolethet enregistrez le fichier de métadonnées sur votre ordinateur local.
Étape 6 : Activer le SSO dans CloudSSO
Dans le volet de navigation de gauche de la console CloudSSO, cliquez sur Settings.
Dans la section SSO Logon, cliquez sur Configure IdP.
Dans la boîte de dialogue Configure IdP, sélectionnez Upload Metadata File.
Cliquez sur Upload File et chargez le fichier de métadonnées IdP obtenu lors de l'Étape 5 : Obtenir les métadonnées SAML IdP depuis Shibboleth.
-
Activez le commutateur SSO pour activer l'authentification unique.
RemarqueL'activation de la connexion SSO désactive la connexion par nom d'utilisateur et mot de passe. Par conséquent, les utilisateurs CloudSSO ne peuvent plus se connecter avec leurs identifiants de plateforme. Une fois cette option activée, tous les utilisateurs doivent se connecter via votre fournisseur d'identité.
Étape 7 : Créer un utilisateur dans CloudSSO
Créez un utilisateur CloudSSO dont le nom d'utilisateur correspond à celui de l'utilisateur Shibboleth associé.
Dans le volet de navigation de gauche de la console CloudSSO, choisissez .
Sur la page User, cliquez sur Create User.
-
Dans le panneau Create User, saisissez un Username.
Dans cet exemple, le nom d'utilisateur est
testUser@testdomain.alicloud.com. Définissez le statut de l'utilisateur sur Enabled.
Cliquez sur Close.
(Facultatif) Étape 8 : Attribuer des permissions à l'utilisateur
Pour permettre aux utilisateurs d'accéder aux ressources de comptes membres Resource Directory spécifiques après le SSO, créez un ensemble de permissions et accordez à l'utilisateur l'accès à ces comptes.
-
Créez un ensemble de permissions dans CloudSSO pour définir les politiques.
Pour plus d'informations, consultez Créer un ensemble de permissions.
-
Accordez à l'utilisateur l'accès aux comptes membres.
Pour plus d'informations, consultez Accorder l'accès à un compte membre.
Vérifier le résultat
Vous pouvez initier le SSO depuis Alibaba Cloud ou depuis Shibboleth.
-
Initier le SSO depuis Alibaba Cloud
Sur la page Overview de la console CloudSSO, copiez l'URL de connexion utilisateur.
Ouvrez l'URL dans un nouveau navigateur.
Cliquez sur Go. Vous êtes redirigé vers la page de connexion Shibboleth. La page SSO Login s'affiche avec le champ Enterprise Account Login URL prérempli. Cliquez sur Go pour accéder à la page de connexion du fournisseur d'identité.
-
Sur la page de connexion Shibboleth, saisissez le nom d'utilisateur (testUser) et le mot de passe, puis cliquez sur Log On.
Après une authentification réussie, vous êtes redirigé vers le portail utilisateur CloudSSO.
Accédez aux ressources des comptes membres pour lesquels vous disposez de permissions.
-
Initier le SSO depuis Shibboleth
-
Accédez à
https://<your_server_address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.Remplacez
<entityID>dans l'URL par l'entityIDAlibaba Cloud obtenu lors de l'Étape 1 : Obtenir les métadonnées SAML SP depuis Alibaba Cloud. -
Sur la page de connexion Shibboleth, saisissez le nom d'utilisateur (testUser) et le mot de passe, puis cliquez sur Log On.
Après une authentification réussie, vous êtes redirigé vers le portail utilisateur CloudSSO.
Accédez aux ressources des comptes membres pour lesquels vous disposez de permissions.
-
FAQ
Si vous rencontrez des problèmes lors de la vérification, consultez le fichier /opt/shibboleth-idp/logs/idp-process.log. Voici les problèmes courants et leurs solutions :
Erreur après une connexion Shibboleth réussie
Vérifiez le message d'erreur dans /opt/shibboleth-idp/logs/idp-process.log. Si l'erreur concerne ValidateUsernamePassword, vérifiez vos paramètres de connexion LDAP et votre déploiement. Assurez-vous d'avoir décommenté les sections requises et qu'il n'y a pas d'espaces superflus.
Échec de la connexion avec l'erreur « unable to connect to the ldap »
Vérifiez les paramètres de connexion LDAP dans les fichiers ldap.properties et attribute-resolver-full.xml.
Erreur de redirection : « The NameID is missing »
Vérifiez que vous avez correctement mappé l'attribut mail depuis les informations utilisateur lors de l'Étape 3 : Configurer les attributs utilisateur depuis Shibboleth. Vérifiez également que le NameID est correctement configuré lors de l'Étape 4 : Configurer le NameID SAML.
Erreur d'accès : « Unsupported Request » sur https://<your_server_address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>
Assurez-vous que l'entityId est cohérent aux trois emplacements suivants : le fichier de métadonnées dans le dossier metadata, le fichier attribute-filter.xml et le fichier relying-party.xml.
Erreur de redirection : « The response signature is invalid »
Chargez à nouveau le fichier de métadonnées Shibboleth dans Alibaba Cloud.