Tous les produits
Search
Centre de documentation

Resource Access Management:Configurer le SSO basé sur les rôles avec Shibboleth

Dernière mise à jour :Aug 09, 2026

Suivez la procédure de configuration complète de l'authentification unique (SSO) basée sur les rôles depuis Shibboleth vers Alibaba Cloud, incluant l'échange de métadonnées SAML, le mappage des attributs et la configuration du NameID.

Avant de commencer

  1. Installez Shibboleth, Tomcat et un serveur LDAP (Lightweight Directory Access Protocol).

  2. Configurez le serveur LDAP.

    Pour cet exemple, ajoutez un compte administrateur au LDAP avec le DN uid=admin,ou=system et le mot de passe secret.

    Ajoutez un compte de test au LDAP avec le DN cn=Test User,ou=users,dc=wimpi,dc=net et le mot de passe secret. La figure suivante présente les détails du compte.

    image.png

    Les champs d'information utilisateur sont les suivants :

    • mail : Mappé au nom de connexion d'un utilisateur RAM dans Alibaba Cloud.

    • memberof : Mappé à un nom de rôle RAM dans Alibaba Cloud.

    • samaccountname : Nom d'utilisateur utilisé pour se connecter à Shibboleth.

    • userpassword : Mot de passe de connexion.

  3. Configurez Shibboleth pour qu'il se connecte au serveur LDAP.

    Modifiez les paramètres suivants dans le fichier /opt/shibboleth-idp/conf/ldap.properties :

    # LDAP authentication mode
    idp.authn.LDAP.authenticator = bindSearchAuthenticator
    
    # LDAP server address
    idp.authn.LDAP.ldapURL = ldaps://[LDAP-server-address]:389
    
    # Disable TLS and SSL
    idp.authn.LDAP.useStartTLS = false
    idp.authn.LDAP.useSSL = false
    
    # Base search directory
    idp.authn.LDAP.baseDN = dc=wimpi,dc=net
    idp.authn.LDAP.subtreeSearch = true
    # Logon matching rule. samaccountname is a field in the user data used for LDAP logon.
    idp.authn.LDAP.userFilter= (samaccountname={user})
    
    # Admin account and password
    idp.authn.LDAP.bindDN = uid=admin,ou=system
    idp.authn.LDAP.bindDNCredential = secret
    
    idp.attribute.resolver.LDAP.searchFilter =(samaccountname=$resolutionContext.principal)
Remarque

Les configurations Shibboleth présentées dans cette rubrique sont fournies à titre de démonstration et illustrent le processus complet de configuration du SSO avec Alibaba Cloud. Alibaba Cloud ne fournit pas de services de conseil pour la configuration de Shibboleth.

Étape 1 : Obtenir les métadonnées du fournisseur de service SAML

  1. Connectez-vous à la console RAM en tant qu'administrateur RAM.

  2. Dans le volet de navigation de gauche, choisissez Integrations > SSO.

  3. Sous l'onglet Role-based SSO, cliquez sur l'onglet SAML et copiez l'URL des métadonnées du fournisseur de service SAML d'Alibaba Cloud.

  4. Ouvrez le lien copié dans une nouvelle fenêtre de navigateur et enregistrez le fichier de métadonnées sous le nom /opt/shibboleth-idp/metadata/aliyun-ram-role-metadata.xml.

    Remarque

    Notez la valeur de l'attribut entityID de l'élément EntityDescriptor. Vous aurez besoin de cette valeur pour la configuration ultérieure de Shibboleth.

Étape 2 : Enregistrer Alibaba Cloud auprès de Shibboleth

Dans /opt/shibboleth-idp/conf/metadata-providers.xml, spécifiez le fichier de métadonnées obtenu à l'Étape 1 : Obtenir les métadonnées du fournisseur de service SAML afin d'enregistrer Alibaba Cloud auprès de Shibboleth.

<!--
    <MetadataProvider id="LocalMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/>
-->

<!-- Find the preceding commented-out code and replace it with the following code. -->

<MetadataProvider id="AliyunMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/aliyun-ram-role-metadata.xml"/>

Étape 3 : Obtenir les métadonnées du fournisseur d'identité SAML

  1. Redémarrez Tomcat pour appliquer vos modifications.

  2. Accédez à https://<your server address>/idp/shibboleth et enregistrez le fichier de métadonnées sur votre machine locale.

Étape 4 : Créer un fournisseur d'identité SAML

  1. Connectez-vous à la console RAM avec votre compte Alibaba Cloud.

  2. Dans le volet de navigation de gauche, choisissez Integrations > SSO.

  3. Sous l'onglet Role-based SSO, cliquez sur l'onglet SAML, puis sur Create IdP.

  4. Sur la page Create IdP, saisissez un IdP Name (shibboleth-provider) et une Note.

  5. Dans la section Metadata File, cliquez sur Upload Metadata File et téléchargez les métadonnées du fournisseur d'identité obtenues à l'Étape 3 : Obtenir les métadonnées du fournisseur d'identité SAML.

  6. Cliquez sur Create IdP.

Notez l'ARN du nouveau fournisseur d'identité pour les étapes suivantes.

Étape 5 : Créer un rôle RAM

  1. Dans le volet de navigation de gauche de la console RAM, choisissez Identities > Roles.

  2. Sur la page Roles, cliquez sur Create Role.

  3. Dans le coin supérieur droit de la page Create Role, cliquez sur Switch to Policy Editor.

  4. Spécifiez le fournisseur d'identité SAML dans l'éditeur.

    Dans l'éditeur visuel, définissez le Principal sur le fournisseur d'identité (shibboleth-provider) créé à l'Étape 4 : Créer un fournisseur d'identité SAML. Pour le IdP Type, sélectionnez SAML.

  5. Dans l'éditeur, définissez la condition saml:recipient sur https://signin.alibabacloud.com/saml-role/sso.

  6. Dans la boîte de dialogue Create Role, saisissez un Role Name (worker) et cliquez sur OK.

Notez l'ARN du nouveau rôle RAM pour les étapes suivantes.

Étape 6 : Configurer les attributs utilisateur dans Shibboleth

  1. Modifiez le fichier /opt/shibboleth/conf/services.xml.

    Le fichier attribute-resolver.xml par défaut ne contient pas les paramètres requis. Remplacez-le par attribute-resolver-full.xml.

    <value>%{idp.home}/conf/attribute-resolver.xml</value>
    <!-- Find the preceding code and replace it with the following code. -->
    <value>%{idp.home}/conf/attribute-resolver-full.xml</value>
  2. Modifiez le fichier /opt/shibboleth/conf/attribute-resolver-full.xml.

    1. Configurez Shibboleth pour renvoyer les attributs utilisateur mail et memberof.

      L'id de l'attribut memberof est role, qui représente le rôle de l'utilisateur. La valeur ReturnValue est <partie de l'ARN du rôle sans le nom du rôle (worker)>+'$1',<ARN du fournisseur de service>. Récupérez l'<ARN du fournisseur de service> à partir de l'Étape 4 : Créer un fournisseur d'identité SAML et l'ARN du rôle à partir de l'Étape 5 : Créer un rôle RAM.

      Remarque

      Le nom du rôle est remplacé par $1 pour prendre en charge plusieurs rôles. Modifiez le rôle d'un utilisateur en ajustant le champ memberof dans les informations utilisateur.

      memberof est un attribut personnalisé. Vous pouvez le remplacer par n'importe quel attribut indiquant le rôle de l'utilisateur.

      <!-- ========================================== -->
      <!--      Attribute Definitions                 -->
      <!-- ========================================== -->
      
      <!-- Schema: Core schema attributes-->
      
      <!-- Find the preceding comment and add the following code after it. -->
      
      <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="https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName" friendlyName="mail" encodeType="false" />
      </AttributeDefinition>
      <AttributeDefinition xsi:type="Mapped" id="role">
          <InputDataConnector ref="myLDAP" attributeNames="memberof" />
          <AttributeEncoder xsi:type="SAML1String" name="urn:mace:dir:attribute-def:role" encodeType="false" />
          <AttributeEncoder xsi:type="SAML2String" name="https://www.aliyun.com/SAML-Role/Attributes/Role" friendlyName="role" encodeType="false" />
          <ValueMap>
              <ReturnValue>acs:ram::114*******71701:role/$1,acs:ram::114*******71701:saml-provider/shibboleth-provider</ReturnValue>
              <SourceValue>(.+)</SourceValue>
          </ValueMap>
      </AttributeDefinition>
    2. Cette connexion LDAP lit ses 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}"
      		...omitted...
      	</DataConnector>
      -->
      
      <!-- Find the preceding example code and replace it 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>
  3. Ajoutez un filtre d'attribut dans /opt/shibboleth/conf/attribute-filter.xml.

    Définissez la value dans la balise PolicyRequirementRule sur l'entityID d'Alibaba Cloud obtenu à l'Étape 1 : Obtenir les métadonnées du fournisseur de service SAML.

    <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">
    	
    <!-- Find the preceding code and add the following code after it. -->
    	
    <AttributeFilterPolicy id="aliyun">
    	<PolicyRequirementRule xsi:type="Requester" value="[entityID]" />
    	<AttributeRule attributeID="mail">
    		<PermitValueRule xsi:type="ANY" />
    	</AttributeRule>
    	<AttributeRule attributeID="role">
    		<PermitValueRule xsi:type="ANY" />
    	</AttributeRule>
    </AttributeFilterPolicy>

Étape 7 : Configurer le NameID

  1. Configurez le NameID pour Alibaba Cloud dans /opt/shibboleth/conf/relying-party.xml.

    Définissez les relyingPartyIds dans la balise bean sur l'entityID d'Alibaba Cloud obtenu à l'Étape 1 : Obtenir les métadonnées du fournisseur de service SAML.

    <!--
    	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>
    -->
    
    <!-- Find the preceding commented-out code and replace it 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>
  2. Configurez la génération du NameID dans /opt/shibboleth/conf/saml-nameid.xml.

    <!-- Find the following two code blocks and uncomment them to apply the configuration. -->
    
    <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'} }" />
  3. Mettez à jour les propriétés NameID dans /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

Étape 8 : Redémarrer Tomcat

Redémarrez Tomcat pour appliquer vos modifications.

Tester le SSO basé sur les rôles

Testez l'intégration SSO après avoir terminé la configuration.

  1. Accédez à https://<your server address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID>.

    Dans l'URL, <entityID> correspond à l'entityID d'Alibaba Cloud obtenu à l'Étape 1 : Obtenir les métadonnées du fournisseur de service SAML.

  2. Sur la page de connexion Shibboleth, saisissez votre nom d'utilisateur et votre mot de passe, puis cliquez sur Log On.

    Le système effectue le SSO et vous connecte à la console Alibaba Cloud avec le rôle spécifié (worker).

FAQ

Consultez le fichier /opt/shibboleth-idp/logs/idp-process.log pour obtenir des détails sur les erreurs. Problèmes courants :

L'échec de la connexion malgré des identifiants corrects

Vérifiez le fichier /opt/shibboleth-idp/logs/idp-process.log. Si l'erreur concerne ValidateUsernamePassword, vérifiez la configuration de la connexion LDAP. Assurez-vous que les sections mises en commentaire sont correctement activées sans espaces supplémentaires.

Connexion inactive et 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 le mappage de l'attribut mail à l'Étape 6 : Configurer les attributs utilisateur dans Shibboleth et la configuration du NameID à l'Étape 7 : Configurer le NameID.

L'accès à https://<your server address>/idp/profile/SAML2/Unsolicited/SSO?providerId=<entityID> renvoie une erreur Unsupported Request

Vérifiez que l'entityID est correcte. L'entityID doit être cohérente dans le fichier de métadonnées du dossier metadata, dans attribute-filter.xml et dans relying-party.xml.

Erreur de redirection : Cannot find SAML role attribute which is required

À l'Étape 6 : Configurer les attributs utilisateur dans Shibboleth, vérifiez le mappage de l'attribut memberof vers role et la valeur ReturnValue.

Erreur de redirection : Cannot find SAML role session name attribute which is required

À l'Étape 6 : Configurer les attributs utilisateur dans Shibboleth, vérifiez que le name de l'attribut mail est https://www.aliyun.com/SAML-Role/Attributes/RoleSessionName. Cela se produit généralement lors de la conversion d'une configuration SSO basée sur les utilisateurs en SSO basé sur les rôles sans mettre à jour la valeur name.

Erreur de redirection : The response signature is invalid

Téléchargez à nouveau les métadonnées Shibboleth sur Alibaba Cloud.