AuthentificationFacteurs

Nœuds : MFA TOTP

Sur cette page

Enrôlement et vérification TOTP (RFC 6238), plus les nœuds transverses de choix/politique MFA, dans le cadre d’un graphe d’authentification.

Graphe d'exemple : vérification TOTP avec repli sur un code de récupération Graphe d'exemple : vérification TOTP avec repli sur un code de récupération
Exemple : après le mot de passe, l’utilisateur saisit son code TOTP (1) ; en cas d’échec, il peut utiliser un code de récupération (2).

TotpVerifierNode : vérifie un code TOTP avec tolérance de dérive d’horloge.

Faites défiler le tableau
PropriétéTypeDéfaut
secretSourcestringldap
secretStateKeystringclé du TotpSecretGeneratorNode
secretAttributeNamestring (obligatoire)oathDeviceProfiles
digitsint6
periodint30
stepsInWindowint1
algorithmstringHmacSHA1
retryLimitint3

Outcomes : true / false / exceeded.

TotpSecretGeneratorNode : génère le secret TOTP et l’URI otpauth:// (première étape de l’enrôlement).

Faites défiler le tableau
PropriétéTypeDéfaut
issuerstringTOSIAM
secretByteLengthint20
digitsint6
periodint30
algorithmstringHmacSHA1
secretStateKeystringENROLLMENT_SECRET_KEY

Outcome : outcome.

TotpEnrollCommitNode : persiste le profil d’appareil TOTP, qui porte le secret, en LDAP après vérification réussie, et génère les codes de récupération. Le profil est stocké en clair ou chiffré selon le service Authenticator (OATH) du royaume : voir Chiffrement des profils.

Faites défiler le tableau
PropriétéTypeDéfaut
secretAttributeNamestringoathDeviceProfiles
secretStateKeystringclé du générateur
recoveryCodesStateKeystringRECOVERY_CODES_KEY

Outcome : outcome.

Chiffrement des profils#

L’attribut oathDeviceProfiles contient un profil par appareil : le secret TOTP et les empreintes des codes de récupération. Les nœuds TOTP l’écrivent et le lisent comme le module OATH des chaînes d’authentification, selon le service Authenticator (OATH) du royaume (Services du royaume) :

Faites défiler le tableau
Réglage du serviceEffet
Schéma de chiffrement NONE (défaut)Le profil est stocké en JSON : le secret est lisible dans l’annuaire.
RSAES_AES256CBC_HS512 ou RSAES_AES128CBC_HS256Le profil est stocké sous forme de JWT chiffré avec la paire de clés désignée par le service (keystore, alias).
  • Lecture des deux formes. TotpVerifierNode et RecoveryCodeVerifyNode lisent un profil en clair comme un profil chiffré : un utilisateur enrôlé par le module OATH se connecte par un graphe, et inversement.
  • Profils déjà enrôlés. Quand le chiffrement est activé après coup, un profil en clair reste utilisable ; il est chiffré à la première vérification TOTP de l’utilisateur, ou à sa première utilisation d’un code de récupération.
  • Service illisible. Si le service ou sa paire de clés ne peut pas être lu, l’enrôlement et la vérification échouent : aucun profil n’est écrit en clair par défaut.
  • Désactivation. Un profil chiffré ne peut plus être lu si le schéma est remis à NONE : gardez le chiffrement tant que des profils chiffrés existent.

Avant la version 3.38.0, les nœuds TOTP ignoraient ce service : ils stockaient toujours le profil en clair et ne savaient pas lire un profil chiffré par le module OATH.

TotpQrCodeDisplayNode : envoie l’URI otpauth:// à l’UI via un HiddenValueCallback (id totpEnrollmentUri) pour affichage du QR code.

Faites défiler le tableau
PropriétéTypeDéfaut
uriStateKeystringclé du générateur

Outcome : outcome.

TotpRecoveryCodesDisplayNode : affiche les codes de récupération puis les efface du shared state.

Faites défiler le tableau
PropriétéTypeDéfaut
recoveryCodesStateKeystringclé du TotpEnrollCommitNode

Outcome : outcome.

RecoveryCodeVerifyNode : vérifie un code de récupération à usage unique, distingue un code invalide d’un code déjà consommé.

Faites défiler le tableau
PropriétéTypeDéfaut
attributeNamestringoathDeviceProfiles

Outcomes : true / false / consumed.

MfaEnrollmentCheckNode : nœud silencieux qui vérifie l’enrôlement MFA et écrit SS_ENROLLED_METHODS pour MfaChoiceNode.

Faites défiler le tableau
PropriétéTypeDéfaut
methodsToCheckstring (liste séparée par virgules)totp,sms,email,passkey

Outcomes : enrolled / notEnrolled.

MfaChoiceNode : présente un ChoiceCallback, intersecte les méthodes activées avec celles réellement enrôlées, et route automatiquement si une seule méthode est disponible.

Faites défiler le tableau
PropriétéTypeDéfaut
enabledMethodsstringtotp,sms,email,passkey
promptstringChoisissez votre méthode de vérification

Outcomes : totp / sms / email / passkey / push.

MfaPolicyDecisionNode : décide si le MFA est requis selon l’IP (CIDR), les groupes de l’utilisateur, ou une décision par défaut.

Faites défiler le tableau
PropriétéTypeDéfaut
exemptCidrsstring (liste de CIDR)""
exemptGroupsstring (liste de groupes)""
defaultDecisionstringrequired

Outcomes : required / optional / exempt.

Mis à jour le