Exemples de flux de connexion
Vous pouvez utiliser un flux de connexion pour personnaliser l’expérience de connexion et intégrer des processus métier avec l’authentification Salesforce. Parmi les cas d’utilisation courants figurent la collecte et la mise à jour de données utilisateur lors de la connexion, la configuration de l’authentification multifacteur ou l’intégration de méthodes d’authentification renforcée tierces.
Éditions requises
Examinons trois cas d’utilisation de flux de connexion courants :
- Collecter et mettre à jour des données utilisateur durant la connexion
- Appliquer une authentification multifacteur personnalisée
- Intégrer des mécanismes d’authentification renforcée tiers
Collecte et mise à jour des données utilisateur durant la connexion
Ce flux de connexion demande aux utilisateurs de confirmer ou de mettre à jour leurs numéros de téléphone, qui sont ensuite mis à jour dans leurs comptes.
- Interrogez l’objet utilisateur pour les numéros de téléphone de l'utilisateur, s’ils existent.
- Affichez les numéros, et demandez à l’utilisateur de les confirmer ou de les mettre à jour.
- Mettez à jour l’objet de l’utilisateur avec les nouveaux numéros, s’ils sont fournis.
Création du flux
- Accédez à https://help.salesforce.com/articleView?id=flow_builder.htm&language=fr
-
Sous l'onglet Gestionnaire de la boîte à outils, cliquez sur Nouvelle ressource, puis créez une variable pour stocker l'ID de l'utilisateur.
L’événement de connexion transmet une liste d’attributs de contenu au flux. Lorsque le flux démarre, les valeurs des attributs correspondants sont remplies dans la variable d'entrée appropriée. Pour utiliser ces attributs dans le flux, définissez des variables de texte locales sous le format LoginFlow_ATTRIBUTE_NAME. Vous pouvez par exemple utiliser LoginFlow_UserId pour vérifier l'ID de l'utilisateur qui se connecte et interroger l'objet utilisateur associé.

Lorsque vous avez ajouté chaque variable, il est affiché sous l’onglet Gestionnaire .
Les variables d'entrée ci-dessous sont prises en charge.
- LoginFlow_LoginType
- LoginFlow_LoginSubType
- LoginFlow_IpAddress
- LoginFlow_UserAgent
- LoginFlow_Platform
- LoginFlow_Application
- LoginFlow_Community
- LoginFlow_SessionLevel
- LoginFlow_UserId
Vous pouvez également stocker ces attributs en tant que variables de sortie dans le flux.
- LoginFlow_FinishLocation (type Texte) : cette variable détermine la destination de l’utilisateur lorsque le flux se termine.
- LoginFlow_ForceLogout (type booléen) : lorsque cette variable est définie sur
true, l'utilisateur est immédiatement déconnecté.
-
Sous l'onglet Gestionnaire, cliquez sur Nouvelle ressource, puis créez une variable d'enregistrement pour stocker les valeurs de l'utilisateur.

-
Ajoutez un élément Obtenir des enregistrements pour référencer l'utilisateur qui tente de se connecter.

-
Spécifiez les champs utilisateur que vous souhaitez stocker dans la variable, par exemple Phone et MobilePhone.

-
Créez un écran de bienvenue pour demander à l'utilisateur de confirmer les numéros de téléphone du fichier.

- Pour définir une valeur par défaut pour chaque composant Téléphone à l’écran, définissez Valeur sur le champ approprié dans la variable d’enregistrement {!user}. Pour Téléphone, c'est {!user.Phone}. Pour Mobile Phone, c'est {!user.mobilePhone}.
-
Pour stocker la saisie de l’utilisateur relative à chaque composant Téléphone, dans la section Stocker les valeurs de sortie du composant, définissez Valeur sur le même champ qu’à l’étape précédente.

-
Ajoutez un élément Mettre à jour les enregistrements qui utilise les valeurs de la variable d'enregistrement {!user} afin de mettre à jour les numéros de téléphone de l'utilisateur. Comme vous stockez les sorties de chaque composant d'écran Phone dans des champs dans la variable d'enregistrement {!user}, le flux utilise ces valeurs pour mettre à jour l'utilisateur.

-
Connectez les éléments ensemble.

-
Nommez le flux de connexion et enregistrez-le.

-
Connexion du flux de connexion à un profil utilisateur. La meilleure pratique consiste à créer un utilisateur test dédié avec un profil test.
Remarque Associez un flux de connexion à votre profil d’administrateur uniquement après avoir vérifié son fonctionnement. Si le flux échoue, vous ne pouvez pas vous connecter à votre organisation. - Déconnectez-vous, puis connectez-vous en tant qu’utilisateur test afin de tester le flux.
Lorsque vous testez l’exemple Flux de bienvenue, il se présente comme suit dans Lightning Experience.
Configuration de l’authentification multifacteur
Cet exemple implémente un flux de connexion qui améliore l’authentification par mot de passe temporel à usage unique (TOTP) avec une méthode d’authentification multifacteur prise en charge par Salesforce. L’agorithme TOTP calcule un mot de passe à usage unique à partir d’une clé secrète partagée et de l’heure actuelle.
Le flux agit comme suit.
- Si l’utilisateur n’est pas encore enregistré, il génère une nouvelle clé secrète, et invite l’utilisateur à enregistrer la clé avec un code Réponse rapide (QR). Lorsque l’utilisateur a fourni un jeton TOTP valide, la clé secrète est stockée dans l’enregistrement de l’utilisateur. La clé est réutilisée pour les connexions futures.
- Si l’utilisateur est déjà enregistré, seul le jeton TOTP lui est demandé.
Les utilisateurs peuvent utiliser une application d’authentification temporelle, telle que Salesforce Authenticator ou Google Authenticator, pour analyser le code QR et générer un jeton TOTP.
Vous pouvez améliorer ce flux et personnaliser l’expérience utilisateur en ajoutant un logo et des couleurs rappelant l’image de marque de votre entreprise. Vous pouvez même ajouter et appliquer différentes stratégies. Vous pouvez par exemple élaborer un processus d’authentification multifacteur dépendant de l’IP qui demande un deuxième facteur d’authentification uniquement lorsque l’adresse IP se situe hors d’une plage donnée.
Cet exemple utilise l'objet TwoFactorInfo et la classe Apex Auth.SessionManagement pour personnaliser et gérer l'authentification multifacteur TOTP s'appuyant sur des normes prises en charge par Salesforce.
- Référencez l’objet TwoFactorInfo de l’utilisateur actuel. Si l’utilisateur n’est pas enregistré, générez une clé.
- Déterminez si l’utilisateur est déjà enregistré avec TOTP.
- Si l’utilisateur est déjà enregistré, invitez-le à fournir le jeton TOTP.
- Si l’utilisateur n’est pas enregistré, invitez-le à s’enregistrer avec un code QR et à fournir le jeton TOTP.
- Validez le jeton TOTP. Si le jeton est valide, le flux de connexion se termine et l’utilisateur se connecte.
- Si le jeton TOTP n’est pas valide, renvoyez l’utilisateur à l’étape 2.
Configuration du flux TOTP
-
Créez les variables.
- secret : stocke la clé secrète de toutes les opérations multifacteur.
- qr_url : stocke l’URL du code QR qui encode la clé secrète.
- IsTokenValid : stocke le résultat de la vérification.
secret et qr_url sont des variables Texte, et IsTokenValid est une variable Booléenne.

-
Pour générer un nouveau secret pour les utilisateurs qui ne sont pas déjà enregistrés dans le flux TOTP, faites glisser un élément Action Apex (héritée) vers la zone de dessin, puis sélectionnez l’action Apex héritée TOTPPlugin.

Les actions Apex sont des classes Apex qui étendent la fonctionnalité standard d'un flux. Vous pouvez utiliser une action Apex pour effectuer un calcul complexe, passer des appels d’API à des services externes, et plus encore.
TOTPPlugin accède aux méthodes TOTP de Salesforce, génère une clé secrète temporelle avec un code QR et valide le TOTP. La classe Apex pour TOTPPlugin est disponible dans le package d’exemple de flux de connexion.
L'action héritée Apex a les paramètres d'entrée ci-dessous.
- OTP_INPUT : le jeton TOTP fourni par l’utilisateur.
- OTP_REGISTRATION_INPUT : le jeton TOTP fourni par l’utilisateur lors du premier enregistrement.
- SECRET_INPUT : la clé secrète utilisée pour générer le jeton TOTP.
Elle renvoie les valeurs de sortie ci-dessous.
- SECRET_OUTPUT : une clé secrète générée par le plug-in.
- QR_URL_OUTPUT : un encodage de la clé secrète au sein d’un code QR.
- IsValid_OUTPUT : si la validation réussit, la valeur renvoyée est
true. Sinon, elle renvoiefalse.
Configurez cette instance de TOTPPlugin pour générer une nouvelle clé secrète et un code QR si l’utilisateur n’est pas enregistré. Dans ce cas, aucune entrée n’est transmise.

La clé secrète et l’URL pour le code QR sont stockées dans les variables qr_url et secret.

-
Configurez un élément Décision pour enregistrer un utilisateur.
Cette décision vérifie si secret est nul. Si la valeur n’est pas nulle, l’utilisateur doit s’inscrire. Par conséquent, définissez Inscrire comme résultat de la décision. Sinon, l’utilisateur est déjà enregistré et doit fournir uniquement le jeton TOTP. Changez l'étiquette du résultat par défaut sur Get TOTP.

-
Configurez l’écran Get TOTP.
Les utilisateurs déjà enregistrés sont dirigés vers cet écran et invités à fournir le jeton TOTP. Plus loin dans le flux, vous pouvez utiliser le jeton TOTP que les utilisateurs saisissent en référençant le nom d'API du composant Texte (OTP_input).

-
Configurez l’écran Registration. Demandez à l'utilisateur de scanner le code QR, d'initialiser l'application cliente TOTP et de saisir le jeton TOTP.

-
Pour valider le jeton TOTP que l'utilisateur saisit, configurez une autre instance de l'action Apex héritée TOTPPlugin.
L'action Apex héritée TOTPPlugin prend en charge les deux cas d'utilisation ci-dessous.
- L’utilisateur vient de l’écran Registration. L’utilisateur doit analyser le code QR et fournir le jeton TOTP. Le jeton TOTP et le secret sont transmis au TOTPPlugin pour validation. TOTPPlugin valide le jeton TOTP par rapport au secret. S’il est valide, le secret est enregistré dans l’enregistrement utilisateur et utilisé pour les futures connexions.
- L’utilisateur vient de l’écran Get Token. L’utilisateur est déjà inscrit et fournit uniquement le TOTP. Le jeton TOTP est transmis à TOTPPlugin via le paramètre TokenInput pour validation.

Le paramètre isTokenValid renvoie le statut de validation, qui est ensuite stocké dans la variable de flux isTokenValid.

-
Détermine si l'utilisateur doit être connecté en configurant un autre élément Décision, avec deux résultats possibles.
- Si IsTokenValid est
true, le jeton est valide. - Sinon, le jeton n'est pas valide.
Si la validation réussit, l’utilisateur continue jusqu’au terme du flux, clique sur l’étape suivante et se connecte à l’application. Si la validation échoue, l'utilisateur est renvoyé à l'étape 2 du flux. À l'étape 2, un utilisateur enregistré est invité à fournir un nouveau jeton TOTP. Si l’utilisateur n’est pas encore enregistré, il est invité à s’enregistrer et à fournir un nouveau jeton TOTP.

- Si IsTokenValid est
-
Connectez les éléments ensemble.
- Pour connecter la décision Inscription à l’écran Inscription, choisissez le résultat Inscrire.
- Pour connecter la décision Inscription à l’écran Obtenir le TOTP, choisissez le résultat Obtenir le TOTP.
- Pour connecter la décision Connexion à la décision Inscription, choisissez le résultat Jeton non valide.
- Enregistrez le flux de connexion, activez-le, puis connectez-le avec un profil utilisateur.
Intégration de méthodes d’authentification renforcée tierces
Vous pouvez utiliser des flux de connexion pour interagir avec des fournisseurs d’authentification tiers externes en utilisant une API.
Par exemple, Yubico propose une authentification renforcée par le biais d’une clé de sécurité physique appelée YubiKey. Yubico fournit également un exemple de bibliothèque Apex et un flux de connexion sur GitHub. La bibliothèque fournit des classes Apex permettant la validation des mots de passe à usage unique YubiKey. Les classes permettent aux utilisateurs de Salesforce d’utiliser YubiKey en tant que deuxième facteur d’authentification lors de la connexion. Pour plus d'informations, reportez-vous à yubikey-salesforce-client.
Vous pouvez également implémenter un service de livraison vocale ou par SMS tiers, tel que Twilio ou TeleSign, pour mettre en place une authentification multifacteur et un flux de vérification de l’identité qui s’appuient sur les SMS. Pour plus d’informations, reportez-vous à l’article Déploiement d’une authentification multifacteur s’appuyant sur des SMS tiers.
Package d'exemples de flux de connexion
Le package Login Flow Samples est un package non géré qui installe différents exemples de flux de connexion dans votre organisation Salesforce. Il contient les exemples ci-dessous.
- E-mail de confirmation : permet d’envoyer un e-mail contenant un code de vérification.
- SF-TOTP : permet d’activer l’authentification multifacteur TOTP.
- Authentification multifacteur conditionnelle : permet d’ignorer l’authentification multifacteur pour les utilisateurs provenant d’une adresse IP de confiance
- Activation de l'appareil : permet de confirmer l’identité de l’utilisateur par e-mail ou par authentification multifacteur.
- Accepter les conditions d’utilisation : permet de demander à l’utilisateur d’accepter les conditions avant de continuer

