Personnalisation de la connexion axée sur le mobile à l’aide de code
Objectifs de formation
Après avoir terminé ce module, vous pourrez :
- Repérer l’emplacement du gestionnaire de découverte de la connexion et le renommer
- Ajouter une fonctionnalité d’authentification sociale au gestionnaire de découverte de la connexion
- Recueillir des informations utilisateur à l’aide d’attributs de demande
Repérage de l’emplacement du gestionnaire de découverte de la connexion par défaut
Lorsque vous créez votre gestionnaire de découverte de la connexion depuis la page Connexion et inscription, Salesforce crée le gestionnaire par défaut en tant que classe Apex. Ce gestionnaire apparaît, accompagné d’autres classes Apex, sur la page Classes Apex de votre organisation.
- Sur la page Login & Registration (Connexion et inscription), sous Login Page Setup (Configuration de la page de connexion), notez (ou copiez) le nom du gestionnaire répertorié dans la zone de texte Login Discovery Handler (Gestionnaire de découverte de la connexion). Si vous devez rouvrir la page Login & Registration (Connexion et inscription), saisissez All Sites (Tous les sites) et sélectionnez All Sites (Tous les sites) dans la zone Quick Find (Recherche rapide) depuis Setup (Configuration). Pour le site Clients NTO, cliquez sur Workspaces (Espaces de travail). Cliquez sur la vignette Administration, puis sur Login & Registration (Connexion et inscription).
- Dans un autre onglet, dans Setup (Configuration), saisissez
Apex Classes
(Classes Apex) dans la zone Quick Find (Recherche rapide), puis cliquez sur Apex Classes (Classes Apex). Le gestionnaire apparaît au sein d’une liste de classes sur la page Classes Apex.
- Repérez (ou recherchez) dans la liste le nom du gestionnaire de découverte de la connexion. Il n’est pas si facile que cela de parcourir la liste des classes Apex pour trouver le gestionnaire, n’est-ce pas ? Pour résoudre ce problème, nous pouvons le renommer afin qu’il soit plus aisément identifiable. De plus, une fois renommé, vous pourrez voir en un coup d’œil qu’il est personnalisé. Le gestionnaire n’a plus besoin d’être « créé automatiquement » (comme l’indique pour l’instant son nom actuel, dans lequel figure la mention en anglais « autocreated »), alors renommons-le pour rendre compte de ce fait.
- Cliquez sur Modifier à côté du nom du gestionnaire. Le nom du gestionnaire apparaît sur la première ligne de code.
- Remplacez le nom généré par Salesforce par celui de votre choix et cliquez sur Enregistrer. Revenez à votre page Connexion et inscription et actualisez celle-ci. Vous pouvez constater que le gestionnaire de découverte de la connexion est mis à jour avec son nouveau nom.
Découverte du gestionnaire de découverte de la connexion par défaut
Familiarisons-nous avec le gestionnaire généré par Salesforce avant de commencer à le personnaliser. Vous pouvez consulter l’exemple de code complet figurant dans le guide du développeur Apex de Salesforce : exemple d’implémentation de LoginDiscoveryHandler. Nous décrivons ici le fonctionnement du gestionnaire de découverte de la connexion.
La première étape consiste à obtenir l’identifiant (adresse e-mail ou numéro de téléphone) transmis depuis la page de connexion. Il faut ensuite vérifier que l’identifiant est dans un format valide.
Maintenant, il faut interroger la base de données pour trouver un utilisateur associé à cet identifiant. Si l’utilisateur est actif et si l’identifiant est unique, il faut déterminer si l’utilisateur a déjà vérifié cet identifiant.
Si l’identifiant a été vérifié, il faut envoyer un code de validation par e-mail ou message texte et préciser à quoi accède l’utilisateur une fois la vérification réussie. Il faut ensuite rediriger l’utilisateur vers la page de vérification sur laquelle il saisit le code de validation. Si l’identifiant n’a pas été vérifié, il faut rediriger l’utilisateur vers la page sur laquelle il saisit un mot de passe.
Voyons maintenant à quoi ressemble la logique du gestionnaire sous la forme d’un graphique.
Voici une autre manière de présenter le processus de vérification d’identité.
- Obtenir l’identifiant.
- L’identifiant est-il valide ?
- S’il est valide, rechercher un utilisateur associé à l’identifiant.
- L’utilisateur est-il actif ?
- S’il est actif, l’identifiant est-il unique ?
- Si c’est le cas, l’utilisateur a-t-il vérifié son identité avec cet identifiant ?
- Si c’est le cas, l’identifiant est vérifié : envoyer un code de validation. Si ce n’est pas le cas, l’identifiant n’est pas vérifié, demander un mot de passe.
- Si le code de validation ou le mot de passe est saisi correctement, diriger l’utilisateur vers la page d’accueil du site Experience Cloud.
Personnalisation du gestionnaire de découverte de la connexion pour l’authentification sociale
Les clients aiment souvent se connecter à un site en saisissant les identifiants qu’ils utilisent sur des réseaux sociaux tels que Twitter, Google ou LinkedIn. Si vous avez configuré votre organisation de sorte à autoriser l’authentification sociale, la découverte de la connexion facilite encore davantage la tâche de vos clients. Vous pouvez ajouter une logique au gestionnaire pour l’authentification sociale par programmation. Cela redirige les clients directement vers le réseau social déterminé par la logique de votre gestionnaire.
-
Configurez des fournisseurs d’authentification Salesforce. La première étape de personnalisation du gestionnaire en vue d’autoriser l’authentification sociale consiste à vérifier si votre organisation est configurée pour les réseaux sociaux que vous souhaitez prendre en charge. Votre organisation doit disposer de fournisseurs d’authentification pour se connecter à chacun de ces réseaux. Salesforce fournit plusieurs fournisseurs d’authentification par défaut permettant d’assurer la connexion avec les réseaux sociaux populaires. Nous en ajoutons d’ailleurs de nouveaux au fur et à mesure que les réseaux émergent. Si aucun fournisseur d’authentification n’est disponible pour un réseau social que vous souhaitez prendre en charge, vous pouvez en créer un en quelques clics.
- Dans Setup (Configuration), saisissez
Auth. Providers
(Fournisseurs d’authentification) dans la case Quick Find (Recherche rapide), puis sélectionnez Auth. Providers (Fournisseurs. d’authentification).
- Créez un fournisseur d’authentification pour un réseau social. Votre organisation Trailhead Playground n’est configurée avec aucun fournisseur d’authentification. Si vous souhaitez en créer un, vous pouvez vous référer à l’unité Configuration de l’authentification sociale du module Trailhead Identité pour les clients. Cette unité présente comment configurer des fournisseurs d’authentification et les ajouter à votre page de connexion en quelques clics.
-
Repérez les URL d’authentification unique de votre réseau social. Lorsque vous ajoutez des fournisseurs d’authentification par programmation, vous devez ajouter les URL d’authentification unique vers le réseau social appropriées.
- Pour revenir à la page Auth. Providers (Fournisseurs d’authentification) : dans Setup (Configuration), saisissez
Auth. Providers
(Fournisseurs d’authentification) dans la case Quick Find (Recherche rapide), puis sélectionnez Auth. Providers (Fournisseurs. d’authentification).
- Cliquez sur le lien vers le nom du réseau social souhaité. Vous devez cliquer sur le nom lui-même et non sur le lien Modifier.
- Développez la section Sites Experience Cloud. Les URL d’authentification unique de chaque fournisseur d’authentification de votre organisation sont répertoriées.
-
Ajoutez la logique d’authentification unique à votre gestionnaire de découverte de la connexion. Dans le cadre de cet exercice, la logique SSO est fournie pour le site Clients NTO. Pour l’organisation de production, ajoutez la logique à votre gestionnaire de découverte de la connexion pour déterminer à quel moment les utilisateurs sont redirigés vers leur réseau social. Votre code personnalisé comprend une logique visant à déterminer si l’utilisateur doit utiliser un réseau social ou se connecter directement à Salesforce. Par exemple, il peut référencer un champ personnalisé de l’objet Utilisateur. Voici un exemple qui implémente l’authentification sociale à l’aide de l’objet standard ThirdPartyAccountLink (TPAL). Une liste de liens de compte tiers (TPAL) est générée lorsque les utilisateurs d’une organisation s’authentifient à l’aide d’un fournisseur d’authentification tiers. Cet exemple interroge le tableau TPAL et redirige l’utilisateur pour qu’il se connecte via Facebook ou LinkedIn s’il trouve le TPAL associé à l’e-mail de l’utilisateur.
//Redirect to Social Sign-On private PageReference getSsoRedirect(User user, String startUrl, Map<String, String> requestAttributes) { // You can look up whether the user can log in with their social credentials.
List<ThirdPartyAccountLink> providers = [select provider from ThirdPartyAccountLink where Handle = :user.email]; String provider = providers[0].Provider; if (provider == ’facebook’) { return new PageReference([select SsoKickoffUrl from AuthProvider where DeveloperName=’facebook’].SsoKickoffUrl); } else if (provider == ’linkedin’) { Return new PageReference([select SsoKickoffUrl from AuthProvider where DeveloperName=’linkedin’].SsoKickoffUrl); } else { return null; }
Recueil d’informations utilisateur à l’aide d’attributs de demande
Vous pouvez déterminer quelles stratégies de connexion sont appliquées en fonction de l’état du navigateur de l’utilisateur lorsqu’il accède à la page de connexion. Par exemple, vous pouvez appliquer différentes stratégies selon qu’une personne se connecte depuis les États-Unis ou depuis la Chine.
Pour recueillir les données du navigateur, utilisez le paramètre requestAttributes de la méthode LoginDiscovery.login. Ce paramètre transmet les valeurs suivantes : CommunityUrl, IpAddress, UserAgent, Platform, Application, City, Country, et Subdivision. Les valeurs City, Country et Subdivision sont obtenues à partir de la géolocalisation de l’IP.
CommunityUrl=http://MyDomainName-dev-ed.my.site.com:5555/discover IpAddress=55.555.0.0 UserAgent=Mozilla/5.0(Macintosh; Intel Mac OS X 10_13_4) Version/11.1 Safari/605.15 Platform=Mac OSX City=Chicago Country=United States Subdivision=Illinois
Voici un exemple utilisant les valeurs obtenues à partir de la géolocalisation de l’IP.
private PageReference getSsoRedirect(User user, String startUrl, Map<String, String> requestAttributes) { // Send US users through a local IdP service if(requestAttributes.get(’Country’) == ’United States’) { String ssoURL = ’https://mycompany.com/idp’; return new PageReference(ssoURL); } return null; }
Voici un exemple pour les utilisateurs mobiles (iOS).
private PageReference getSsoRedirect(User user, String startUrl, Map<String, String> requestAttributes) { // Send iOS users through Facebook SSO if(requestAttributes.get(’Platform’) == ’iPhone’) { String ssoURL = ’https://<MyDomainName>.my.salesforce.com/nto/services/auth/sso/Facebook’; return new PageReference(ssoURL); } return null; }
Garantie de l’unicité des utilisateurs
Il peut exister plusieurs utilisateurs ayant la même adresse e-mail et le même numéro de mobile vérifiés au sein de votre organisation. Toutefois, vos clients doivent avoir des identifiants uniques. Pour résoudre ce problème, vous pouvez ajouter au gestionnaire de découverte de la connexion quelques lignes de code permettant de filtrer les utilisateurs afin de garantir qu’ils sont uniques.
La classe LoginDiscoveryHandler décrite dans le guide du développeur Apex contient un exemple de code qui garantit que les utilisateurs détenant la licence External Identity sont uniques. Vous pouvez adapter le code de sorte à prendre en charge d’autres cas d’utilisation. Par exemple, vous pouvez modifier le code pour qu’il traite des utilisateurs disposant d’autres types de licences utilisateurs ou répondant à d’autres critères.
Vous avez appris à configurer vos pages de connexion axées sur le mobile et à les personnaliser. Dans la prochaine unité, vous apprendrez à suivre vos progrès en créant des rapports, des graphiques et un tableau de bord pour les présenter.