Authentification multi-facteur
Avec Cloud Directory pour IBM Cloud® App ID, vous pouvez exiger plusieurs facteurs d'authentification lors du flux de connexion à votre application. Un deuxième facteur d'authentification augmente la sécurité de votre application en confirmant non seulement que l'utilisateur connaît ses informations d'identification, mais aussi qu'il a accès à l'adresse électronique, au numéro de téléphone ou à l'application d'authentification qu'il a enregistrés. En développant le flux MFA, vous pouvez configurer des extensions pré-MFA et post-MFA afin de personnaliser vos décisions en phase d'exécution pour déterminer quels sont les utilisateurs qui doivent recourir au deuxième facteur d'authentification ou vous fournir des renseignements analytiques sur votre flux de connexion.
L'authentification multifacteur App ID est prise en charge dans le flux de code d'autorisation OAuth 2.0 pour les utilisateurs Cloud Directory via le widget de connexion. Si vous utilisez une connexion d'entreprise avec SAML 2.0 ou une connexion sociale, vous pouvez activer l'authentification multifacteur via ce fournisseur d'identité.
Examinez le diagramme suivant pour voir comment fonctionne le flux d'authentification multifacteur pour les e-mails et les SMS.
{: caption="Directory*
-
Lorsqu'un utilisateur parvient à se connecter à votre application, il a complété le premier facteur d'authentification. Puis, en fonction de votre configuration MFA, il a reçu un e-mail ou un SMS contenant un code à 6 chiffres.
Lorsque l'authentification MFA est activée, le widget de connexion du service App ID nécessite une seconde forme d'authentification à chaque tentative de connexion d'un utilisateur, sauf si une extension est configurée.
-
Un utilisateur est censé consulter son téléphone ou ses e-mails pour obtenir le code et le saisir dans l'écran qui s'affiche.
-
Si le code qu'il a saisi correspond au code qui lui a été envoyé, l'utilisateur est redirigé vers votre application et il est désormais connecté. S'il a fait des erreurs en saisissant le code, le deuxième facteur d'authentification échoue et l'utilisateur est dans l'incapacité d'accéder à vos ressources.
Si la vérification de l'adresse électronique n'est pas configurée, App ID valide le canal d'authentification multifacteur à l'arrière-plan. Par exemple, si vous configurez le canal des e-mails pour l'authentification multifacteur sans configurer la vérification de l'adresse électronique, App ID valide l'adresse électronique dès la première connexion avec authentification multifacteur établie. En revanche, si vous configurez le canal des SMS, App ID valide le numéro de téléphone de l'utilisateur dès la première connexion établie. Si vous utilisez le canal des SMS et souhaitez que l'adresse électronique soit validée, veillez à activer la vérification de l'adresse électronique.
Configuration d'un canal des e-mails
Vous pouvez configurer App ID de manière à envoyer un code d'authentification multifacteur à vos utilisateurs par courrier électronique.
A la première activation de l'authentification multifacteur, deux événements se produisent :
- Le canal des e-mails est sélectionné par défaut. Vous pouvez basculer sur le canal des SMS.
- App ID enregistre automatiquement l'adresse e-mail principale associée au profil de votre utilisateur Cloud Directory.
Lorsque l'adresse e-mail d'un utilisateur n'est pas déjà confirmée, via des API de gestion ou une vérification des adresses e-mail au moment de son inscription, elle est confirmée lors de la vérification du code d'authentification multifacteur.
A sa première activation, l'authentification multifacteur est définie pour utiliser par défaut les courriers électroniques. Vous pouvez modifier ce paramétrage afin d'utiliser des SMS, mais vous ne pouvez pas configurer les deux en même temps.
Avec l'interface graphique
Vous pouvez configurer le canal des e-mails de l'authentification multifacteur à l'aide de l'interface graphique.
-
Accédez à l'onglet Cloud Directory > Authentification multifacteur du tableau de bord App ID.
-
A la section Activer l'authentification multifacteur, dans l'onglet Paramètres, faites basculer l'authentification multifacteur sur Activé. Confirmez que vous avez compris que l'authentification multifacteur est facturée en tant qu'événement de sécurité avancée. Par défaut, E-mail est sélectionné comme Méthode d'authentification.
-
Dans l'onglet Canal des e-mails, examinez le Modèle d'e-mail. Vous pouvez choisir d'envoyer le modèle avec les termes fournis ou rédiger votre propre message. Veillez à utiliser la balise HTML appropriée. Dans la console, vous pouvez ajouter des paramètres et insérer des images. Pour changer la langue du message, vous pouvez utiliser les API pour définir la langue. Toutefois, le contenu et la conversion du message relèvent de votre seule responsabilité. Consultez le tableau suivant pour afficher la liste des tableaux que vous pouvez utiliser dans ce message et tous les autres messages que vous pouvez envoyer. Si un utilisateur ne fournit pas l'information recueillie par le paramètre, un blanc apparaît.
Paramètres du message d'AMF Paramètre Description %{display.logo}Affiche l'image que vous avez configurée pour votre widget de connexion. %{user.displayName}Affiche le pseudonyme (appelé nom d'écran dans l'interface) que l'utilisateur choisit d'utiliser lorsqu'il interagit avec l'application. %{user.email}Affiche l'adresse électronique avec laquelle l'utilisateur s'est inscrit. %{user.username}Affiche le nom d'utilisateur spécifié pour l'utilisateur lorsque l'authentification est effectuée à l'aide d'un nom d'utilisateur et d'un mot de passe. %{user.firstName}Affiche le prénom spécifié par l'utilisateur. %{user.formattedName}Affiche le nom complet de l'utilisateur. %{user.lastName}Affiche le nom de famille spécifié par l'utilisateur. %{mfa.code}Affiche un code de vérification d'authentification multifacteur unique. Si un utilisateur ne fournit pas l'information recueillie par le paramètre, un blanc apparaît.
Avec les API
Assurez-vous de disposer des prérequis suivants :
- Votre ID titulaire d'instance App ID. Cet ID est disponible dans la section Données d'identification pour le service du tableau de bord.
- Votre jeton IAM (Identity and Access Management). Pour obtenir de l'aide sur l'obtention d'un jeton IAM, consultez la documentation IAM.
Pour activer MFA :
-
Activez l'authentification multifacteur (MFA) en envoyant une demande PUT au noeud final
/config/cloud_directory/mfaavec votre configuration MFA pour définirisActivesurtrue.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '"isActive": true' -
Activez votre canal MFA en faisant une demande PUT au point de terminaison
/mfa/channels/<channel>avec votre configuration MFA. LorsqueisActiveest défini surtrue, votre canal d'authentification multifacteur est activé.$ curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/mfa/channels/email \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '"isActive": true'
Si votre instance App ID Cloud Directory est configurée pour fonctionner avec un expéditeur de courrier électronique personnalisé, l'authentification multifacteur utilise le même expéditeur pour fournir le code à usage unique. Pour plus d'informations, voir la documentation Cloud Directory.
Configuration d'un canal des SMS
Vous pouvez envoyer un message SMS à vos utilisateurs en guise de seconde forme de vérification. Lorsque vous activez la fonction SMS, App ID tente automatiquement d'enregistrer le premier numéro de téléphone principal valide trouvé dans le profil d'un utilisateur de Cloud Directory. Si le numéro n'est pas valide ou qu'aucun numéro de téléphone n'est trouvé dans le profil utilisateur, un widget d'enregistrement s'affiche pour permettre à l'utilisateur d'ajouter un numéro. Ensuite, le numéro fait partie du profil utilisateur et, après validation, devient le numéro par défaut utilisé pour l'authentification multifacteur.
Lors de l'activation initiale de l'authentification multifacteur, MFA est définie par défaut pour utiliser des e-mails. Vous pouvez modifier ce paramétrage afin d'utiliser des SMS, mais vous ne pouvez pas configurer les deux en même temps.
Avant de commencer
App ID utilise Vonage (anciennement Nexmo) pour envoyer des codes à usage unique par SMS.
-
Procurez-vous votre clé d'API et votre secret Vonage. Ces informations figurent sur la page des paramètres de votre compte dans le tableau de bord Vonage. Consultez la documentation de Vonage pour plus d'informations sur la façon d'obtenir vos informations d'identification.
-
Enregistrez votre ID d'expéditeur ou le numéro d'expéditeur (
from) dans Vonage. Ce numérofromest ce qui apparaît sur le téléphone de votre utilisateur pour indiquer la provenance du SMS. Dans certains pays, Vonage prend en charge les ID émetteurs alphanumériques. App ID utilise la valeur que vous entrez en tant qu'ID émetteur de Vonage. Par conséquent, s'ils sont pris en charge par Vonage, vous pouvez utiliser les ID avec App ID.
Avec l'interface graphique
Pour configurer l'authentification multifacteur avec l'interface graphique, consultez Cloud Directory.
-
Accédez à l'onglet Cloud Directory > Authentification multifacteur du tableau de bord App ID.
-
A la section Activer l'authentification multifacteur, dans l'onglet Paramètres, faites basculer l'authentification multifacteur sur Activé. Confirmez que vous avez compris que l'authentification multifacteur est facturée en tant qu'événement de sécurité avancée.
-
Sélectionnez SMS comme méthode d'authentification.
-
Dans l'onglet Canal des SMS, configurez vos informations de compte Vonage.
-
Si vous n'avez pas encore de compte Vonage, créez-en un.
-
Dans le tableau de bord Vonage, cliquez sur SMS.
-
Dans la section Code it yourself, copiez votre clé d'API et collez-la dans la zone key du tableau de bord App ID.
-
Copiez la valeur de la zone API secret du tableau de bord Vonage et collez-la dans la zone Secret du tableau de bord App ID.
-
Saisissez l'ID à partir duquel vous souhaitez envoyer des messages. Un format de numéro valide suit le format de numérotation international E.164. Par exemple, un numéro américain se présente sous la forme
+19998887777. Vous devez spécifier à la fois le code pays précédé du signe+et le numéro national de l'abonné. Dans certains pays, Vonage prend en charge les ID émetteurs alphanumériques. App ID utilise la valeur que vous entrez en tant qu'ID émetteur de Vonage. Par conséquent, s'ils sont pris en charge par Vonage, vous pouvez utiliser les ID avec App ID.
-
Avec les API
Avant d'utiliser l'API, assurez-vous de disposer des prérequis suivants :
- Votre ID titulaire d'instance App ID. Cet ID est disponible dans la section Données d'identification pour le service du tableau de bord.
- Votre jeton IAM (Identity and Access Management). Pour obtenir de l'aide sur l'obtention d'un jeton IAM, consultez la documentation IAM.
-
Activez l'authentification multifacteur (MFA) en envoyant une demande PUT au noeud final
/config/cloud_directory/mfaavec votre configuration MFA pour définirisActivesurtrue.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{"isActive": true}' -
Activez votre canal MFA en faisant une demande PUT au point de terminaison
/mfa/channels/<channel>avec votre configuration MFA. LorsqueisActiveest défini surtrue, votre canal d'authentification multifacteur est activé. La sectionconfigextrait la clé d'API et le secret Nexmo ainsi que le numéro indiqué dansfrom.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/mfa/channels/nexmo' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{ "isActive": true, "config": { "key": "<nexmoKey>", "secret": "<nexmoSecret>", "from": <senderPhoneNumber> } }' -
Une fois le canal configuré avec succès, vérifiez que votre configuration et votre connexion Nexmo sont correctes en utilisant le bouton de test sur la console ou en utilisant l'API de gestion.
curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/sms_dispatcher/test \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{"phone_number": "+1 999 999 9999"}'
Extension de MFA
Avec les extensions, vous pouvez faire passer la sécurité de l'authentification multifacteur au niveau suivant. Au moyen de décisions personnalisées concernant les personnes qui doivent fournir une deuxième forme d'authentification, vous pouvez offrir à vos utilisateurs une expérience plus personnelle de votre application. Vous pouvez également utiliser des extensions pour effectuer l'audit des comportements de l'authentification multifacteur, par exemple le nombre d'authentifications de seconde forme ayant échoué.
Avant de commencer
Avant d'enregistrer votre extension, assurez-vous de disposer des prérequis suivants :
- Votre ID titulaire d'instance App ID. Cet ID est disponible dans la section Applications du tableau de bord.
- Votre jeton IAM (Identity and Access Management). Pour obtenir de l'aide sur l'obtention d'un jeton IAM, consultez la documentation IAM.
Pour plus d'informations sur les restrictions et les limitations liées à l'utilisation des extensions, voir Limites d'App ID .
Configuration de l'extension pré-MFA
Avec une extension pré-MFA, vous pouvez définir les critères qui permettent aux utilisateurs d'éviter d'avoir à entrer une deuxième forme d'authentification lorsqu'ils interagissent avec votre application.
- Lorsqu'un utilisateur parvient à se connecter à votre application, App ID envoie une demande POST à votre extension.
- Votre extension utilise les informations de la demande POST pour déterminer si cet utilisateur particulier peut ignorer l'exigence d'un deuxième facteur d'authentification en fonction des critères que vous avez définis.
- Votre configuration renvoie une réponse JSON à App ID qui ressemble à ceci :
{'skipMfa': true}. - En fonction de la réponse de votre configuration, App ID lance le flux d'authentification multifacteur ou octroie l'accès à votre application.
Par défaut, si une erreur se produit lors de la demande envoyée à votre point d'extension, App ID exige que l'utilisateur ait recours à l'authentification multifacteur.
Pour configurer une extension pré-MFA :
-
Définissez les critères auxquels doit répondre un utilisateur pour pouvoir ignorer le deuxième facteur d'authentification. Consultez les exemples suivants pour avoir une idée si ce n'est pas clair pour vous.
Exemple de critères pour l'abandon de l'AMF Exemple de cas d'utilisation Exemple de validation Vous souhaitez que les utilisateurs fournissent un deuxième facteur d'authentification une seule fois par jour. Configurez votre extension pour valider que le paramètre last_successful_first_factorintervient dans la même journée.Vous avez une liste d'utilisateurs approuvés qui n'ont pas besoin de fournir le second facteur à chaque fois. Configurez votre extension pour valider que usernameouuser_idfigure dans la liste autorisée.Vous ne souhaitez pas que vos utilisateurs passent par un ordinateur de bureau pour fournir le deuxième facteur à chaque fois. Configurez votre extension pour valider que le type d'unité ( device_type) est défini surweb. -
Lorsque vous connaissez vos critères, configurez une extension pouvant écouter une demande POST. Le noeud final doit pouvoir lire le contenu provenant d'App ID. Le corps envoyé par App ID avant le démarrage du flux MFA est au format suivant:
{"jws": "jws-format-string"}. Votre extension peut également décoder et valider le contenu (un objet JSON) et renvoyer une réponse JSON selon le schéma suivant :{"skipMfa": Boolean }. Par exemple :{'skipMfa': true}.Les informations que App ID transmet à votre point d'extension. Informations Description correlation_idNombre aléatoire généré pour chaque session MFA. Si vous disposez à la fois d'une extension pré-MFA et post-MFA, ce nombre est identique pour chacune de ces extensions pour la même session. Par exemple, 3bb9236c-792f-4cca-8ae1-ada754cc4555.extensionNom de votre extension. Pour ce cas d'utilisation, l'extension est nommée premfa.device_typeType d'unité utilisée par votre utilisateur pour accéder à votre application. Options possibles : webetmobile.source_ipAdresse IP de l'appareil ayant envoyé la demande à votre application. Par exemple, 127.0.0.1.headersInformations renvoyées par le navigateur lorsqu'un utilisateur tente de se connecter à votre application. L'en-tête se présente ainsi : {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0"}.tenant_idID titulaire de votre application. client_idID client de votre application. user_idID de l'utilisateur qui a envoyé la demande d'authentification. Par exemple, 11112222-3333-4444-2222-555522226666.usernameNom d'utilisateur de la personne qui a envoyé la demande d'authentification. Par exemple, testuser@email.com.application_typeType de votre application. Par exemple, s'il s'agit d'une application Web JavaScript à page unique, la valeur browserappest renvoyée. Options possibles :browserapp,serverappetmobileapp.first_namePrénom de l'utilisateur. last_nameNom de famille de l'utilisateur. last_successful_first_factorDate de la dernière saisie correcte des données d'identification par l'utilisateur. Par exemple, 1660032586651.last_successful_mfaDate de la dernière exécution complète du flux d'authentification multifacteur par l'utilisateur. Par exemple, 1660032586651.Pour voir un exemple d'extension, consultez l'exemple.
-
Enregistrez votre extension avec votre instance d'App ID en envoyant une demande PUT à
config/cloud_directory/mfa/extensions/premfa. La configuration comprend l'URL de votre extension et les informations d'autorisation requises pour accéder au noeud final. A des fins de développement,isActiveest défini surfalse. Prenez soin de tester votre configuration avant de l'activer.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/premfa' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{ "isActive": false, "config": { "url": "<extensionsURL>", "headers": { "Authorization": "<customExtensionAuthorizationHeader>" } } }'Il est vivement recommandé de toujours utiliser HTTPS au lieu de HTTP pour
extensions_URLpour faire en sorte que votre connexion soit chiffrée. -
Une fois l'extension configurée, vérifiez que votre nœud final fonctionne correctement à l'aide de l'API de test. App ID effectue une requête POST sur votre extension configurée avec les exemples de valeurs.
curl -X POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/premfa/test \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' -
Activez votre extension avec une demande PUT qui définit le paramètre
isActiveavec la valeurtrue.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/premfa \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{"isActive": true}'Pour désactiver votre extension, définissez
isActiveavec la valeurfalse.
Configuration de l'extension post-MFA
Lorsque vous configurez une extension et l'enregistrez avec App ID, le service appelle votre extension après chaque tentative d'authentification dans laquelle il y a un second facteur d'identification. Vous pouvez utiliser ces informations pour prendre de meilleures décisions pour vos utilisateurs. Par exemple, vous pouvez utiliser les informations sur la collecte de l'extension post-MFA pour vos règles et votre méthode heuristique, puis utiliser l'extension pré-MFA pour les appliquer.
-
Lorsqu'un utilisateur parvient à se connecter à votre application, il est invité à saisir son deuxième facteur d'authentification.
-
Lorsque ce deuxième facteur d'authentification est saisi correctement, deux actions simultanées se déclenchent :
-
App ID envoie les informations concernant la connexion à l'extension que vous avez configurée.
-
L'utilisateur est redirigé vers votre application.
-
Pour configurer une extension post-MFA :
-
Configurez un point d'extension pouvant écouter une demande POST. Le noeud final doit pouvoir lire le contenu envoyé par App ID. Facultativement, il peut aussi décoder le contenu JSON renvoyé par App ID et valider qu'il n'a été modifié en aucune façon par un tiers. Une chaîne au format
{"jws": "jws-format-string"}est renvoyée avec les informations suivantes :Les informations que App ID transmet à votre point d'extension. Informations Description correlation_idNombre aléatoire généré pour chaque session MFA. Si vous disposez à la fois d'une extension pré-MFA et post-MFA, ce nombre est identique pour chacune de ces extensions. Par exemple, 3bb9236c-792f-4cca-8ae1-ada754cc4555.extensionNom de votre extension. Pour ce cas d'utilisation, l'extension est nommée postmfa.statusStatut de l'authentification MFA. Options possibles : successetfailed.reasonCause de l'échec de l'authentification MFA. Par exemple, user locked out - exceeded maximum number of verification attempts.device_typeType d'unité utilisée par votre utilisateur pour accéder à votre application. Options possibles : web,mobile.source_ipAdresse IP de l'appareil ayant envoyé la demande à votre application. Par exemple, 127.0.0.1.headersInformations renvoyées par le navigateur lorsqu'un utilisateur tente de se connecter à votre application. L'en-tête se présente ainsi : {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0"}.tenant_idID titulaire de votre application. client_idID client de votre application. user_idID de l'utilisateur qui a envoyé la demande d'authentification. usernameNom d'utilisateur de la personne qui a envoyé la demande d'authentification. Par exemple, testuser@email.com.application_typeType de votre application. Par exemple, s'il s'agit d'une application Web JavaScript à page unique, la valeur browserappest renvoyée. Options possibles :browserapp,serverappetmobileapp.first_namePrénom de l'utilisateur. last_nameNom de famille de l'utilisateur. -
Enregistrez votre extension avec votre instance d'App ID en envoyant une demande PUT à
config/cloud_directory/mfa/extensions/postmfa. La configuration comprend l'URL de votre extension et les informations d'autorisation requises pour accéder au noeud final. A des fins de développement,isActiveest défini surfalse. Prenez soin de tester votre configuration avant de l'activer.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/postmfa' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{ "isActive": false, "config": { "url": "<extensionsURL>", "headers": { "Authorization": "<customExtensionAuthorizationHeader>" } } }'Il est vivement recommandé de toujours utiliser HTTPS au lieu de HTTP pour extensions_URL pour faire en sorte que votre connexion soit chiffrée.
-
Une fois l'extension configurée, vérifiez que votre nœud final fonctionne correctement à l'aide de l'API de test. App ID effectue une requête POST sur votre extension configurée avec les exemples de valeurs.
curl -X POST https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/postmfa/test \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' -
Activez votre extension en définissant le paramètre
isActiveavec la valeurtrue.curl -X PUT https://<region>.appid.cloud.ibm.com/management/v4/<tenantID>/config/cloud_directory/mfa/extensions/postmfa \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header 'Authorization: Bearer <IAMToken>' \ -d '{"isActive": true}'Pour désactiver votre extension, définissez
isActiveavec la valeurfalse.