Personnaliser l’authentification multifacteur (MFA) adaptative
Vous pouvez personnaliser l’authentification multifacteur (MFA) adaptative pour une variété de scénarios avec Auth0 Actions.
Quand personnaliser l’authentification multifacteur (MFA) adaptative
Si vos utilisateurs ne sont pas inscrits à la MFA, vous devriez utiliser l’autorisation par défaut pour l’authentification multifacteur (MFA) adaptative. Si un utilisateur n’est pas inscrit à la MFA et que votre action évalue le risque comme étant élevé, vous avez très peu d’options pour arrêter un acteur menaçant.
Avant de commencer à personnaliser l’authentification multifacteur (MFA) adaptative, posez-vous quelques questions :
À quel niveau de confiance souhaitez-vous déclencher la MFA?
Comment voulez-vous mesurer le risque?
Voulez-vous qu’Auth0 mesure la confiance ou souhaitez-vous une mesure personnalisée?
Comment allez-vous gérer les utilisateurs qui ne sont pas inscrits à la MFA?
Évaluer la confiance
L’authentification multifacteur (MFA) adaptative calcule un pointage total de la confiance basé sur l’analyse de trois évaluations. Chaque évaluation a son propre pointage de confiance. Pour en savoir plus, consultez Adaptive MFA.
Pointages de confiance
Les pointages de confiance et leurs actions associées sont décrits ci-dessous :
Pointage de confiance | Description | Action |
---|---|---|
low |
La transaction de connexion ne correspond pas aux modèles affichés précédemment par l’utilisateur. | Exiger MFA. |
medium |
La transaction de connexion correspond en quelque sorte aux modèles affichés précédemment par l’utilisateur. | Ne pas exiger MFA. |
high |
La transaction de connexion correspond étroitement aux modèles précédemment affichés par l’utilisateur. | Ne pas exiger MFA. |
neutral |
N/A. Réservé pour une utilisation future. | N/A. Réservé pour une utilisation future. |
Pointage de confiance personnalisé
Si vous souhaitez implémenter votre propre méthode pour évaluer le pointage de confiance total de différents scénarios, vous pouvez utiliser les données dises dans l’objet RiskAssessment.
Consultez les exemples ci-dessous pour découvrir comment l’authentification multifacteur (MFA) adaptative évalue la confiance dans différents cas d’utilisation.
Exemples de scénarios à haut risque et à faible confiance
Le tableau suivant décrit les scénarios à haut risque qui entraînent un low
pointage de confiance :
État de l’utilisateur | Friction de connexion souhaitée | Politique d’inscription souhaitée | Mise en œuvre | | -- | -- | -- | -- | -- | -- | | Inscrit dans MFA | Ne pas exiger le MFA | S.O. (utilisateur déjà inscrit) | Utiliser une action pour contourner le MFA | | Non inscrit dans MFA | Exiger une vérification par courriel | Passer l’inscription (ne pas collecter d’authentifiants additionnels) | Comportement par défaut (aucune action liée à MFA) | | Inscrit dans MFA | Ne pas exiger d’authentifiants additionnels | Ne pas utiliser d’action liée à MFA) | |Non inscrit à MFA | Exiger la vérification du courriel | Exiger l’inscription à MFA (collecter des authentifiants supplémentaires) | Utiliser une action pour forcer l’inscription à MFA (modèle disponible) |
Exemples de scénarios à haut risque et à forte confiance
Le tableau suivant décrit les scénarios à faible risque qui entraînent un pointage high
de confiance :
| État de l’utilisateur | Friction de connexion souhaitée | Politique d’inscription souhaitée | Mise en œuvre | | -- | -- | | -- | | -- | | Inscrit à l’authentification MFA | Pas de friction | S.O. (utilisateur déjà inscrit) | Comportement par défaut (pas d’action liée à l’AMF) | | Pas inscrit à la MFA | Pas de friction | Sauter l’inscription (ne pas collecter d’authentifiants supplémentaires) | Comportement par défaut (pas d’action liée à la MFA) | | Pas inscrit à la MFA | Pas de friction | Exiger l’inscription à l’AMF (collecter un authentifiant supplémentaire) | Utiliser une action pour forcer l’inscription à la MFA (modèle disponible) |
Objet riskAssessment
L’objet riskAssessment
contient le pointage de confiance total, les informations de version et les détails des évaluations individuelles.
Propriété | Description | Type | Valeurs possibles |
---|---|---|---|
confidence |
Score de confiance global calculé par l’authentification multifacteur (MFA) adaptative. | chaîne | low , medium , high , neutral |
version |
Identifiant de version de l’API d’évaluation des risques. | chaîne | 1 |
assessments |
Objet contenant les détails d’une évaluation individuelle. | objet | Lire objet évaluations |
exports.onExecutePostLogin = async (event, api) => {
if (event.authentication && event.authentication.riskAssessment) {
event.authentication.riskAssessment = {
confidence: 'low' | 'medium' | 'high' | 'neutral',
version: '1',
assessments: {
UntrustedIP: {
confidence: 'low' | 'medium' | 'high' | 'neutral',
code: 'not_found_on_deny_list' | 'found_on_deny_list',
details: { // only if 'found_on_deny_list'
ip: '192.168.1.1',
matches: '192.168.0/64',
source: 'firehol',
category: 'abuse'
}
},
NewDevice: {
confidence: 'low' | 'medium' | 'high' | 'neutral',
code: 'match' | 'partial_match' | 'no_match',
details: {
device: 'known' | 'unknown',
useragent: 'known' | 'unknown',
}
},
ImpossibleTravel: {
confidence: 'low' | 'medium' | 'high' | 'neutral',
code: 'missing_geoip', | 'anonymous_proxy' | 'unknown_location' | 'initial_login' | 'location_history_not_found' | 'invalid_travel' | 'minimal_travel_from_last_login' | 'impossible_travel_from_last_login' | 'substantial_travel_from_last_login' | 'travel_from_last_login'
}
},
PhoneNumber: {
code: "requires_verification | ok",
confidence: "low | medium | high | neutral",
details: {
lineType: "FIXED_LINE | MOBILE | FIXED_LINE_OR_MOBILE | TOLL_FREE | PREMIUM_RATE | SHARED_COST | VOIP | PERSONAL_NUMBER | PAGER | UAN | UNKNOWN"
isValid: true | false,
countryCode: 1,
number: "+12223334444"
}
}
};
}
}
Was this helpful?
Objet assessments
L’objet assessments
contient des détails sur les trois évaluations de risques individuelles :
Chaque évaluation comprend un pointage de confiance, un code qui décrit le résultat de l’évaluation et des informations contextuelles supplémentaires.
Évaluation NewDevice
L’évaluation NewDevice
détermine si l’utilisateur se connecte à partir d’un appareil connu et contient les propriétés suivantes :
Propriété | Description | Type | Valeurs possible |
---|---|---|---|
confidence |
Pointage de confiance calculé par l’authentification multifacteur (MFA) adaptative. | chaîne | low , medium , high , neutral |
code |
Résultat de l’évaluation. | chaîne | match , partial_match , no_match , initial_login , unknown_device , no_device_history , assessment_not_available |
details |
Renseignements contextuels supplémentaires. | objet | Voir le tableau ci-dessous. |
Propriété du code d’évaluation NewDevice
La propriété du code
d’évaluation NewDevice
est égale à l’une des valeurs suivantes :
Valeur | Description |
---|---|
match |
Les valeurs de propriété de l’objet details sont équivalentes. |
partial_match |
Les valeurs de propriété de l’objet details sont similaires. |
no_match |
Les valeurs de propriété de l’objet details sont différentes. |
initial_login |
L’utilisateur s’est connecté pour la première fois sur l’appareil. |
unknown_device |
Auth0 n’a pas pu obtenir les métadonnées de l’appareil. |
no_device_history |
Il n’y a pas d’historique de connexion associé à l’appareil. |
assessment_not_available |
Auth0 n’a pas pu effectuer une évaluation de l’appareil. |
Objet de détails d’évaluation NewDevice
Si la valeur de la propriété du code
équivaut à match
, partial_match
ou no_match
, l’évaluation NewDevice
contient l’objet details
avec les propriétés suivantes :
Propriété | Description | Type | Valeurs admises |
---|---|---|---|
device |
Appareil de l’utilisateur. | string | known , unknown |
useragent |
Agent utilisateur. | string | known , unknown |
Évaluation ImpossibleTravel
L’évaluation ImpossibleTravel
détermine si l’utilisateur se connecte à partir d’un emplacement qui pourrait indiquer un possible déplacement et contient les propriétés suivantes :
Propriété | Description | Type | Valeurs possibles |
---|---|---|---|
confidence |
Score de confiance calculé par l'authentification multifacteur (MFA) adaptative. | chaîne | low , medium , high , neutral |
code |
Résultat de l’évaluation. | chaîne | minimal_travel_from_last_login , travel_from_last_login , substantial_travel_from_last_login , impossible_travel_from_last_login , invalid_travel , missing_geoip , anonymous_proxy , unknown_location , initial_login , location_history_not_found , assessment_not_available |
Évaluation UntrustedIP
L’évaluation UntrustedIP
détermine si l’adresse IP de l’utilisateur est présente dans le référentiel d’adresses IP de faible réputation d’Auth0 (« liste de refus ») et contient les propriétés suivantes :
Propriété | Description | Type | Valeurs possibles |
---|---|---|---|
confidence |
Score de confiance calculé par l’authentification multifacteur (MFA) adaptative. | chaîne | low , medium , high , neutral |
code |
Résultat de l’évaluation. | chaîne | not_found_on_deny_list , found_on_deny_list , invalid_ip_address , assessment_not_available |
details |
Informations contextuelles supplémentaires. | object | Voir le tableau ci-dessous. |
Objet de détails d’évaluation UntrustedIP
Si la valeur de la propriété du code
d’évaluation UntrustedIP
est égale à found_on_deny_list
, l’objet details
est présent et contient les propriétés suivantes :
| Property | Description | Type | Possible values |
| -- | -- | -- | | -- |
| ip
| Adresse IP de l’appareil. | Toute adresse IPv4 ou IPv6 valide. |
| matches
| Masque de sous-réseau auquel appartient l’adresse IP. | Chaîne de caractères - Tout masque de sous-réseau IPv4 ou IPv6 valide. |
| source
| Nom de la source de renseignements sur les menaces pour la liste de refus. | chaîne de caractères | Tout texte valide. |
| category
| Catégorie indiquant pourquoi l’adresse IP n’est pas fiable. | Chaîne de caractères | abuse
, anonymizer
, datacenter
, reputation
, unroutable
|
Propriété de catégorie d’objet détails d’évaluation UntrustedIP
La propriété de catégorie
d’objet détails
d’évaluation UntrustedIP
décrit la raison générale pour laquelle l’authentification multifacteur (MFA) adaptative considère une adresse IP donnée comme étant non fiable et est égale à l’une des valeurs suivantes :
Valeur | Description |
---|---|
abuse |
L’adresse IP a présenté des comportements abusifs ou a été identifiée comme étant membre de robots. |
anonymizer |
L’adresse IP appartient à des services d’anonymisation tels que les fournisseurs de VPN, les proxys ouverts et les nœuds de sortie TOR. |
datacenter |
L’adresse IP appartient aux fournisseurs d’hébergement en nuage et aux centres de données de colocation. |
reputation |
L’adresse IP a un mauvais score de réputation basé sur l’activité. |
unroutable |
L’adresse IP ne se trouve dans aucune plage allouée ou déléguée par un registre Internet autorisé ou autorisée pour un usage public. |
Évaluation PhoneNumber
L’évaluation PhoneNumber
évalue le risque qu’un numéro de téléphone représente pour une transaction entrante et contient les propriétés suivantes :
Propriété | Description | Type | Valeurs possibles |
---|---|---|---|
code |
Décrit le résultat de l’évaluation. | chaîne | ok , requires_verification , phone_number_not_provided , assessment_not_available |
confidence |
Score de confiance calculé par l’authentification multifacteur (MFA) adaptative. | chaîne | low , medium , high , neutral |
details |
Informations contextuelles supplémentaires. | object | Voir le tableau ci-dessous. |
Objet de détails d’évaluation PhoneNumber
L’objet de details
d’évaluation PhoneNumber
contient les propriétés suivantes :
Propriété | Description | Type | Valeurs possible |
---|---|---|---|
lineType |
Type de ligne téléphonique | chaîne | FIXED_LINE , MOBILE , FIXED_LINE_OR_MOBILE , TOLL_FREE , PREMIUM_RATE , SHARED_COST , VOIP , PERSONAL_NUMBER , PAGER , UAN , UNKNOWN |
isValid |
Renvoie la validité du numéro | booléen | true , false |
countryCode |
Code du pays d’origine du téléphone | entier | 0-999 |
number |
Numéro de téléphone | chaîne | Numéro valide incluant countryCode |
Résultats des actions
Si l’une de vos actions déclenche la MFA en fonction du pointage de confiance, la stratégie Authentification multifacteur (MFA) adaptative par défaut déclenche la MFA lorsque le pointage de confiance est low
.
Le tableau suivant montre les résultats possibles en fonction de la combinaison d’actions et d’actions d’autorisations de l’authentification multifacteur (MFA) adaptative par défaut.
Résultat de l’action | Action Authentification multifacteur (MFA) adaptative | Résultat |
---|---|---|
Non autorisé | Déclencher MFA | Non autorisé |
Non autorisé | MFA non requise | Non autorisé |
Déclencher MFA | Déclencher MFA | Déclencher MFA |
Déclencher MFA | MFA non requise | Déclencher MFA |
MFA non requise | Déclencher MFA | Déclencher MFA |
MFA non requise | MFA non requise | MFA non requise |
Modèles d’actions
Auth0 propose deux modèles d’actions basés sur l’authentification multifacteur (MFA) adaptative que vous pouvez personnaliser : Authentification multifacteur (MFA) adaptative et Inscription à l’AMF requise.
Modèle d’authentification multifacteur (MFA) adaptative
Ce modèle fournit un exemple et un point de départ sur la manière de créer un flux commercial personnalisé en utilisant des évaluations de risques individuelles.
/**
* Handler that will be called during the execution of a PostLogin flow.
*
* @param {Event} event - Details about the user and the context in which they are logging in.
* @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
*/
exports.onExecutePostLogin = async (event, api) => {
if (event.authentication &&
event.authentication.riskAssessment &&
event.authentication.riskAssessment.assessments.NewDevice) {
// Example condition: prompt MFA only based on the NewDevice
// confidence level, this will prompt for MFA when a user is logging in
// from an unknown device.
let shouldPromptMfa;
switch (event.authentication.riskAssessment.assessments.NewDevice.confidence) {
case 'low':
case 'medium':
shouldPromptMfa = true;
break;
case 'high':
shouldPromptMfa = false;
break;
case 'neutral':
// When this assessor has no useful information about the confidence,
// do not prompt MFA.
shouldPromptMfa = false;
break;
}
// It only makes sense to prompt for MFA when the user has at least one
// enrolled MFA factor.
const canPromptMfa = event.user.multifactor && event.user.multifactor.length > 0;
if (shouldPromptMfa && canPromptMfa) {
api.multifactor.enable('any', { allowRememberBrowser: true });
}
}
};
Was this helpful?
Exiger un modèle d’inscription à la MFA
Ce modèle montre comment vous pouvez appliquer l’inscription à la MFA lorsque vous utilisez une stratégie d’authentification multifacteur standard ou adaptative. Il utilise event.user.multifactor
pour vérifier si l’utilisateur est inscrit à la MFA et, si ce n’est pas le cas, l’invite à le faire.
/**
* Handler that will be called during the execution of a PostLogin flow.
*
* @param {Event} event - Details about the user and the context in which they are logging in.
* @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login.
*/
exports.onExecutePostLogin = async (event, api) => {
if (!event.user.multifactor || event.user.multifactor.length == 0) {
api.multifactor.enable('any', { allowRememberBrowser: true });
}
};
Was this helpful?
Actions de cas d’utilisation
Voici quelques suggestions sur la manière de créer des actions personnalisées en fonction de votre cas d’utilisation.
Effectuer une action si le pointage de confiance total est X
Évaluez la propriété RiskAssessment.confidence
, puis comparez-la aux constantes high
, medium
ou low
:
exports.onExecutePostLogin = async (event, api) => {
const { riskAssessment } = event.authentication || {};
const riskIsMedium = riskAssessment && riskAssessment.confidence === 'medium';
if (riskIsMedium) {
// ....
}
}
Was this helpful?
Réaliser une action si le pointage de confiance est supérieur ou inférieur à X
Les pointages de confiance sont des valeurs discrètes (et non comprises dans une gamme); vous ne pouvez donc pas utiliser d’opérateurs de comparaison (tels que <
ou >
) pour évaluer plusieurs valeurs dans une seule condition.
Utilisez plusieurs conditions pour combiner logiquement tous les pointages de confiance que vous souhaitez gérer. Par exemple, si vous souhaitez savoir quand le pointage de confiance est plus élevé que low
, vérifiez s’il est égale à medium
ou à high
:
exports.onExecutePostLogin = async (event, api) => {
const { riskAssessment } = event.authentication || {};
const riskIsMediumOrHigh = riskAssessment &&
(riskAssessment.confidence === 'high' ||
riskAssessment.confidence === 'medium');
if (riskIsMediumOrHigh) {
// ...
}
}
Was this helpful?
Obtenir des détails supplémentaires si le pointage de confiance total est X
L’objet riskAssessment
est enregistré dans vos journaux de locataire. Vous pouvez afficher les entrées du journal pour voir le pointage d’évaluation des risques et les facteurs déterminants (raisons).
Vous pouvez afficher l’objet riskAssessment
et signaler les résultats à un autre endroit. Par exemple, vous pouvez envoyer un courriel ou sauvegarder un enregistrement dans une base de données externe.
exports.onExecutePostLogin = async (event, api) => {
const { riskAssessment } = event.authentication || {};
const riskIsLow = riskAssessment && riskAssessment.confidence === 'low';
if (riskIsLow) {
// log(externalDatabase, riskAssessment);
}
}
Was this helpful?
Réaliser une action si une évaluation donnée a un résultat donné
Utilisez l’objet assessments pour accéder aux détails des évaluations individuelles, y compris la propriété du code
:
exports.onExecutePostLogin = async (event, api) => {
const { riskAssessment } = event.authentication || {};
const { ImpossibleTravel } = riskAssessment && riskAssessment.assessments;
if (ImpossibleTravel.code === 'impossible_travel_from_last_login') {
// ...
}
}
Was this helpful?
Regroupez les évaluations pour obtenir un pointage de confiance total personnalisé.
Utilisez l’objet assessments pour accéder aux détails des évaluations individuelles, puis utilisez la propriété confidence
, la propriété du code
, ou les deux.
Pour en savoir plus sur le pointage de confiance personnalisé, consultez Pointage de confiance personnalisé.
Bloquer la transaction en cours et renvoyer une erreur et un message si une évaluation donnée a un résultat donné
Utilisez l’objet assessments pour accéder aux détails des évaluations individuelles, y compris la propriété du code
.
Empêchez la transaction de connexion de se terminer en renvoyant la fonction de rappel avec un objet UnauthorizedError
comme paramètre d’erreur. L’objet UnauthorizedError
définit toujours error
sur unauthorized
, mais vous pouvez personnaliser leerror_message
:
exports.onExecutePostLogin = async (event, api) => {
const { riskAssessment } = event.authentication || {};
const { ImpossibleTravel } = riskAssessment && riskAssessment.assessments;
if (ImpossibleTravel.code === 'impossible_travel_from_last_login') {
return api.access.deny('Login blocked due to impossible travel detected.')
}
}
Was this helpful?
Ceci redirige l’utilisateur vers l’URL de rappel de l’application avec les paramètres error
et error_message
inclus.
Gérer en toute sécurité les cas où Auth0 ne parvient pas à exécuter les évaluations
Auth0 attribue automatiquement un pointage de confiance low
en cas d’échec de l’évaluation des risques.
Pour mitiger ce scénario, utilisez l’objet assessments pour inspecter la propriété du code
pour chaque évaluation individuelle et vérifier si la valeur est définie sur assessment_not_available
.