Skip To Content

Configurer SimpleSAMLphp

Vous pouvez configurer SimpleSAMLphp 1.10 et les versions ultérieures en tant que fournisseur d'identités (IDP) pour les identifiants de connexion d'entreprise dans Portal for ArcGIS. Le processus de configuration se compose de deux étapes principales : l'enregistrement du fournisseur d'identités d'entreprise auprès de Portal for ArcGIS et l'enregistrement de Portal for ArcGIS auprès du fournisseur d'identités d'entreprise.

Vous pouvez également transmettre au portail des métadonnées concernant les groupes d'entreprise de votre magasin d'identités. Cela vous permet de créer des groupes sur le portail qui se basent sur les groupes d'entreprise de votre magasin d'identités. Lorsque les membres se connectent au portail, l'accès au contenu, aux éléments et aux données est déterminé par les règles d'appartenance définies dans le groupe d'entreprise. Si vous ne communiquez pas les métadonnées requises concernant les groupes d'entreprise, vous pourrez toutefois créer des groupes. Cependant, les règles d'appartenance seront contrôlées par Portal for ArcGIS et non par le magasin d'identités.

Informations requises

Portal for ArcGIS doit recevoir certaines informations attributaires de la part du fournisseur d'identités lorsqu'un utilisateur se connecte à l'aide d'identifiants de connexion d'entreprise. NameID est un attribut obligatoire qui doit être envoyé par votre fournisseur d'identités dans la réponse SAML, afin que la fédération avec Portal for ArcGIS fonctionne. Lorsqu'un utilisateur IDP se connecte, un nouvel utilisateur nommé NameID est créé par Portal for ArcGIS dans son magasin d'utilisateurs. Les caractères autorisés pour la valeur envoyée par l'attribut NameID sont les caractères alphanumériques et le trait de soulignement (_). (le point) et @ (le symbole arobase). Tous les autres caractères seront désactivés pour contenir des traits de soulignement dans le nom d'utilisateur créé par Portal for ArcGIS.

Portal for ArcGIS prend en charge le flux des attributs givenName et email address de l'identifiant de connexion d'entreprise provenant du fournisseur d'identités d'entreprise. Lorsqu'un utilisateur se connecte à l'aide d'un identifiant de connexion d'entreprise, et si Portal for ArcGIS reçoit des attributs avec les noms givenname et email ou mail (quelle que soit la casse), Portal for ArcGIS indique le nom complet et l'adresse électronique du compte de l'utilisateur avec les valeurs reçues par le fournisseur d'identités. Il est conseillé de transmettre l'adresse électronique (email address) reçue du fournisseur d'identités d'entreprise afin que l'utilisateur puisse recevoir les notifications.

Enregistrer SimpleSAMLphp en tant que fournisseur d'identités d'entreprise auprès de Portal for ArcGIS

  1. Configurer une source d'authentification utilisée par l'IdP de SimpleSAMLphp.
    1. Créer une source d'authentification.

      SimpleSAMLphp prend en charge l'authentification des utilisateurs à partir de diverses sources d'authentification telles qu'un serveur LDAP, les utilisateurs d'un serveur SQL, un domaine Active Directory, etc. L'exemple suivant montre comment configurer Apache Directory Server en tant que source d'authentification dans l'IdP SimpleSAMLphp.

      Il est possible de configurer les sources d'authentification dans le fichier <SimpleSAML_HOME>/config/authsources.php. Pour configurer le serveur LDAP, ouvrez le fichier config/authsources.php et ajoutez une source d'authentification basée sur LDAP au format suivant.

      'example-ldapApacheDS' => array(
      		'ldap:LDAP',
      		/* The hostname of the LDAP server. */
      		'hostname' => 'host:port',
      		/* Whether SSL/TLS should be used when contacting the LDAP server. */
      		'enable_tls' => TRUE,
      		/*
      		 * Which attributes should be retrieved from the LDAP server.
      		 * This can be an array of attribute names, or NULL, in which case
      		 * all attributes are fetched.
      		 */
      		'attributes' => NULL,
      		/*
      		 * The pattern that should be used to create the users DN given the username.
      		 * %username% in this pattern will be replaced with the user's username.
      		 *
      		 * This option is not used if the search.enable option is set to TRUE.
      		 */
      		'dnpattern' => 'uid=%username%,ou=users,ou=system',
      		/*
      		 * As an alternative to specifying a pattern for the users DN, it is possible to
      		 * search for the username in a set of attributes. This is enabled by this option.
      		 */
      		'search.enable' => FALSE,
      		/*
      		 * The DN that will be used as a base for the search.
      		 * This can be a single string, in which case only that DN is searched, or an
      		 * array of strings, in which case they will be searched in the order given.
      		 */
      		'search.base' => 'ou=users,ou=system',
      		/*
      		 * The attribute(s) the username should match against.
      		 *
      		 * This is an array with one or more attribute names. Any of the attributes in
      		 * the array may match the value the username.
      		 */
      		'search.attributes' => array('uid', 'mail'),
      		/*
      		 * The username & password the simpleSAMLphp should bind to before searching. If
      		 * this is left as NULL, no bind will be performed before searching.
      		 */
      		'search.username' => 'uid=admin,ou=system',
      		'search.password' => 'password',
      	),

      Portal for ArcGIS prend en charge le flux des attributs givenName et email address de l'identifiant de connexion d'entreprise provenant du fournisseur d'identités d'entreprise. Lorsqu'un utilisateur se connecte à l'aide d'un identifiant de connexion d'entreprise, et si Portal for ArcGIS reçoit des attributs avec les noms givenname et email ou mail (quelle que soit la casse), Portal for ArcGIS indique le nom complet et l'adresse électronique du compte de l'utilisateur avec les valeurs reçues par le fournisseur d'identités.

      Nous vous recommandons de transmettre l'adresse électronique communiquée par le fournisseur d'identités d'entreprise à Portal for ArcGIS. Cela peut s'avérer utile si l'utilisateur devient plus tard administrateur. Le fait d'avoir une adresse électronique dans le compte autorise l'utilisateur à recevoir des notifications concernant les activités administratives et à envoyer des invitations à d'autres utilisateurs pour rejoindre l'organisation.

    2. Configurez la source d'authentification que vous avez créée ci-dessus en tant que module d'authentification dans l'IdP SimpleSAMLphp. Ouvrez le fichier metadata/ saml20-idp-hosted.php et ajoutez la source d'authentification à utiliser.
      /*
      	 * Authentication source to use. Must be one that is configured in	 * 'config/authsources.php'.	 */
      	'auth' => 'example-ldapApacheDS',
  2. Configurer le format d'identifiant de nom pris en charge par l'IdP de SimpleSAMLphp. Ouvrez le fichier < SimpleSAML_HOME >/metadata/saml20-idp-hosted.php et ajoutez-y l'extrait de code ci-après. Dans l'exemple suivant, l'attribut uid est transmis en tant que NameID par l'IdP de SimpleSAMLphp à Portal for ArcGIS après l'authentification de l'utilisateur.
    'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',		'authproc' => array(
    			  3 => array(
    			  'class' => 'saml:AttributeNameID',			  'attribute' => 'uid',	              'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent',				  ),
    			),
  3. Enregistrer le fournisseur d'identités SimpleSAMLphp pour votre organisation Portal for ArcGIS.
    1. Connectez-vous au site Web du portail en tant qu'administrateur de votre organisation et cliquez sur Mon organisation > Modifier les paramètres > Sécurité.
    2. Dans la section Connexions d'entreprise, cliquez sur le bouton Définir le fournisseur d'identités et saisissez le nom de votre organisation dans la fenêtre qui apparaît (par exemple, City of Redlands). Lorsque les utilisateurs accèdent au site Web du portail, ce texte est intégré dans le nom de l'option de connexion SAML (par exemple, Utilisation de votre compte Ville de Redlands).
      Remarque :

      Vous pouvez enregistrer un seul fournisseur d'identités pour votre portail.

    3. Indiquez si vos utilisateurs peuvent rejoindre l'organisation automatiquement ou après l'ajout des comptes au portail. Sélectionnez la première option pour permettre aux utilisateurs de se connecter à l'organisation avec leur identifiant de connexion d'entreprise sans intervention de l'administrateur. Leur compte est automatiquement enregistré auprès de l'organisation lors de leur première connexion. La seconde option suppose que l'administrateur enregistre les comptes nécessaires auprès de l'organisation à l'aide d'un utilitaire de ligne de commande ou d'un exemple de script Python. Une fois les comptes enregistrés, les utilisateurs peuvent se connecter à l'organisation.
      Astuce:

      Nous vous recommandons de désigner au moins un compte d'entreprise pour administrer votre portail et de rétrograder ou de supprimer le compte d'administrateur initial. Nous vous conseillons également de désactiver le bouton Créer un compte et la page de connexion (signup.html) sur le site Web du portail pour empêcher les utilisateurs de créer leurs propres comptes. Pour obtenir des instructions complètes, reportez-vous à la rubrique Configuration d'un fournisseur d'identités compatible avec SAML avec votre portail.

    4. Indiquez des informations de métadonnées concernant le fournisseur d'identités à l'aide d'une des trois options ci-dessous :

      URL : sélectionnez cette option si l'URL des métadonnées de la fédération SimpleSAMLphp est accessible. Il s'agit généralement de https://<simpleSAML-server>/<saml-app-name>/saml2/idp/metadata.php.

      Remarque :

      Si votre fournisseur d'identités d'entreprise inclut un certificat auto-signé, vous pouvez rencontrer une erreur en essayant de spécifier l'URL HTTPS des métadonnées. Cela se produit parce que Portal for ArcGIS ne peut pas vérifier le certificat auto-signé du fournisseur d'identités. Vous pouvez également utiliser HTTP dans l'URL, une des autres options ci-dessous ou configurer votre fournisseur d'identités avec un certificat approuvé.

      Fichier : sélectionnez cette option si l'URL n'est pas accessible. Enregistrez les métadonnées de l'URL en tant que fichier XML et téléchargez le fichier vers Portal for ArcGIS à l'aide de l'option Fichier.

      Paramètres : sélectionnez cette option si l'URL ou le fichier n'est pas accessible. Entrez les valeurs manuellement et fournissez les paramètres demandés : URL de connexion et certificat. Contactez votre administrateur SimpleSAMLphp pour les connaître.

  4. Configurez les paramètres avancés comme il convient :
    • Chiffrer l'assertion : sélectionnez cette option si SimpleSAMLphp doit être configuré pour chiffrer les réponses d'assertion SAML.
    • Activer la demande signée : sélectionnez cette option pour que Portal for ArcGIS signe la demande d'authentification SAML envoyée à SimpleSAMLphp.
    • ID d'entité : mettez cette valeur à jour pour utiliser un nouvel ID d'entité qui identifie de manière unique votre portail auprès de SimpleSAMLphp.
    • Propager la déconnexion au fournisseur d'identité : sélectionnez cette option pour qu'Portal for ArcGIS utilise une URL de déconnexion pour déconnecter l'utilisateur de SimpleSAMLphp. Indiquez l'URL à utiliser dans le paramètre URL de déconnexion. Si le fournisseur d'identités exige que l'URL de déconnexion soit signée, vous devez sélectionner l'option Activer la demande signée.
    • URL de déconnexion : l'URL du fournisseur d'identités à utiliser pour déconnecter l'utilisateur actuellement connecté. L'URL de déconnexion est généralement https://idphost.domain.com/simplesaml/saml2/idp/SingleLogoutService.php. Cette URL est définie dans l'élément SingleLogoutService, dans le fichier de métadonnées d'IDP. L'URL du fichier de métadonnées est généralement http://[simpleSAML-server]/simplesaml/saml2/idp/metadata.php.

    Les paramètres Chiffrer l'assertion et Activer la demande signée utilisent le certificat samlcert dans le KeyStore du portail. Pour utiliser un nouveau certificat, supprimez le certificat samlcert, créez un nouveau certificat avec le même alias (samlcert) en suivant la procédure indiquée dans la rubrique Importer un certificat dans le portail, puis redémarrez le portail.

  5. Vous pouvez également transmettre au portail les métadonnées concernant les groupes d'entreprise du magasin d'identités :
    1. Connectez-vous au répertoire Portal for ArcGIS en tant qu'administrateur de votre organisation. L'URL est au format suivant : https://webadaptorhost.domain.com/webadaptorname/portaladmin.
    2. Cliquez sur Sécurité > Config > Mettre à jour le magasin d'identités.
    3. Indiquez la configuration de groupe JSON dans la zone de texte Configuration du magasin de groupes (au format JSON).
      • Copiez le texte suivant et modifiez-le pour l'adapter à votre site :

        {
          "type": "LDAP",  "properties": {
            "userPassword": "secret",    "isPasswordEncrypted": "false",    "user": "uid=admin,ou=system",    "ldapURLForUsers": "ldaps://bar2:10636/ou=users,ou=ags,dc=example,dc=com",    "ldapURLForRoles": "ldaps://bar2:10636/dc=example,dc=com",    "usernameAttribute": "cn",    "caseSensitive": "false",    "userSearchAttribute": "cn",    "memberAttributeInRoles": "member",    "rolenameAttribute":"cn"
          }
        }

        Dans la plupart des cas, vous ne devez modifier que les valeurs des paramètres user, userPassword, ldapURLForUsers et ldapURLForRoles. L'URL de votre annuaire LDAP doit être fournie par votre administrateur LDAP.

        Dans l'exemple ci-dessus, l'URL LDAP fait référence aux utilisateurs au sein d'un OU spécifique (ou=utilisateurs). Si des utilisateurs sont présents dans plusieurs OU, l'URL LDAP peut pointer vers un OU de niveau supérieur ou même vers le niveau racine si cela est nécessaire. Dans ce cas, l'URL ressemble à ce qui suit :

        "ldapURLForUsers": "ldaps://bar2:10636/dc=example,dc=com",

        Le compte que vous utilisez pour le paramètre user doit disposer d'autorisations pour rechercher les noms des groupes dans votre organisation. Même si vous entrez le mot de passe en texte clair, il sera chiffré lorsqu'il sera affiché ou stocké dans le répertoire de configuration du portail.

        Si votre LDAP est configuré pour ne pas respecter la casse, définissez le paramètre caseSensitive sur false.

    4. Lorsque vous avez entré, au format JSON, les informations concernant la configuration du magasin d'utilisateurs, cliquez sur Mettre à jour la configuration pour enregistrer vos modifications et redémarrer le portail.

Enregistrer Portal for ArcGIS en tant que fournisseur de services approuvé auprès de SimpleSAMLphp

  1. Configurez Portal for ArcGIS en tant que fournisseur de services approuvé auprès de SimpleSAMLphp en paramétrant le fichier <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php.
    1. Obtenez le fichier XML de métadonnées de votre organisation Portal for ArcGIS.

      Pour obtenir le fichier de métadonnées, connectez-vous en tant qu'administrateur de votre organisation et ouvrez la page de votre organisation. Cliquez sur le bouton Modifier les paramètres, puis sur l'onglet Sécurité puis, dans la section Identifiants de connexion d'entreprise, cliquez sur le bouton Obtenir un fournisseur de services.

    2. Convertissez le fichier XML que vous avez obtenu à l'étape secondaire précédente au format PHP.

      SimpleSAMLphp attend des informations de métadonnées du fournisseur de services au format PHP. SimpleSAMLphp propose un convertisseur de métadonnées XML vers PHP intégré qui, par défaut, est disponible en tant que https://<simpleSAML-server>/<saml-app-name>/admin/metadata-converter.php dans votre installation simpleSAMLphp. Utilisez le convertisseur pour convertir le XML en PHP.

    3. Ouvrez le fichier metatadata/saml20-sp-remote.php et ajoutez la configuration du fournisseur de services au format PHP créée à l'étape 1.b ci-dessus.

      Vous trouverez ci-dessous un exemple de la configuration du fournisseur de services ajouté dans le fichier de métadonnées.

      /* The following is a Portal for ArcGIS organization service provider */
      $metadata['webadaptorhost.domain.com.webadaptorname'] = array (  'entityid' => ' webadaptorhost.domain.com.webadaptorname',  'name' =>
        array (    'en' => 'portal ',  ),  'description' =>
        array (    'en' => 'portal ',  ),  'OrganizationName' =>
        array (    'en' => 'portal ',  ),  'OrganizationDisplayName' =>
        array (    'en' => 'portal ',  ),  'url' =>
        array (    'en' => 'https://webadaptorhost.domain.com/webadaptorname',  ),  'OrganizationURL' =>
        array (    'en' => 'https://webadaptorhost.domain.com/webadaptorname',  ),  'contacts' =>
        array (  ),  'metadata-set' => 'saml20-sp-remote',  'AssertionConsumerService' =>
        array (    0 =>
          array (      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST',      'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin',      'index' => 1,    ),    1 =>
          array (      'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',      'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin',      'index' => 2,    ),  ),  'SingleLogoutService' =>
        array (  ),
      );
  2. Configurez l'attribut qui est transmis en tant que NameID à Portal for ArcGIS par l'IdP de SimpleSAMLphp après authentification de l'utilisateur. Pour ce faire, ajoutez l'attribut à la fin de la configuration du fournisseur de services que vous avez ajouté à l'étape précédente.

    Dans l'exemple suivant, l'attribut uid est transmis en tant que NameID par l'IdP de SimpleSAMLphp à Portal for ArcGIS, après l'authentification de l'utilisateur. (Remplacez webadaptorhost.domain.com.webadaptorname par l'URL de votre portail.)

    'NameIDFormat'               => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'simplesaml.nameidattribute' => 'uid',
    /* The following indicates whether or not to send all the attributes received from the authentication source to the service provider.  If true, it will send, otherwise it will not send all the attributes*/
      'simplesaml.attributes'      => true,
    );
  3. Si vous choisissez le paramètre avancé Chiffrer l'assertion en enregistrant SimpleSAMLphp en tant que fournisseur d'identités d'entreprise, ajoutez l'attribut ci-dessous, en bas de la configuration du fournisseur de services que vous avez ajouté à l'étape 1.
    /*
      Whether assertions sent to this SP should be encrypted. The default value is FALSE.  */
      'assertion.encryption' => true,
    );