Authentik : activer l’OTP par e-mail pour l’authentification multi-facteurs (MFA)

L’authentification multi-facteurs (MFA) est devenue indispensable pour sécuriser l’accès aux applications, en particulier lorsqu’elles sont exposées sur Internet. Authentik propose plusieurs méthodes de MFA, dont l’OTP par e-mail, une solution simple à déployer et accessible à tous les utilisateurs, même sans smartphone ou application d’authentification.

Dans ce tutoriel, nous allons voir comment activer et configurer l’OTP par e-mail dans Authentik, étape par étape. Cette méthode permet d’envoyer un code à usage unique directement par e-mail lors de la connexion, offrant un bon compromis entre sécurité et simplicité d’usage.

Ce guide s’adresse aux administrateurs système, responsables sécurité et intégrateurs souhaitant renforcer la sécurité de leurs applications protégées par Authentik, tout en conservant une expérience utilisateur fluide.

Création de l’étape pour ajouter OTP par e-mail

Pour commencer, nous allons créer deux étape qui va se charger d’enroller l’adresse e-mail de l’utilisateur pour l’OTP et la seconde étape qui va être en charge de l’OTP une fois l’utilisateur enrollé.

Depuis le menu, aller sur Flow and Stages -> Stages et cliquer sur le bouton Create 1.

Choisir le type : Email Authentificator Setup Stage 1 puis cliquer sur le bouton Next 2.

Nommer l’étape 1 et cliquer sur Finish 2.

Créer ensuite une seconde étape de type Authentificator Validation Stage 1 et cliquer Next 2.

Commencer par nommer l’étape 1, dans la liste des périphériques (devices) cocher seulement 2 Email-based Authentificators, dans la partie Configuration stages, ajouter le premier stage que l’on a créé 3 qui permet l’enrôlement de l’adresse e-mail et cliquer sur Finish 4.

Les deux étapes sont configurés.

Création d’un nouveau flux d’authentification

Pour éviter d’appliquer l’OTP à toutes les applications, on va créer un nouveau flux d’authentification dans lequel nous allons intégré l’OTP.

Pour cette partie, on va utiliser un « flow » qui est disponible sur le site d’Authentik qui se trouve ici : https://docs.goauthentik.io/add-secure-apps/flows-stages/flow/examples/flows/#two-factor-login

Télécharger le fichier et modifier le en éditant la ligne 8 (slug) sinon vous allez écraser le modèle par défaut :

version: 1
metadata:
  labels:
    blueprints.goauthentik.io/instantiate: "false"
  name: Example - Two-factor Login
entries:
  - identifiers:
      slug: authentication-flow-otp-email
    model: authentik_flows.flow

Depuis le liste des Flows, cliquer sur sur le bouton Import 1.

Sélectionner le fichier 1 et cliquer sur le bouton Import 2.

Le flux est importé 1, cliquer dessus pour accéder à la configuration de celui-ci.

Dans le détail du flux, aller sur Stage Bindings 1, sélectionner l’étape 2 default-authentification-flow-mfa et cliquer sur Delete 3.

Confirmer la suppression de l’étape en cliquant sur le bouton Delete 1.

Cliquer maintenant sur le bouton Bind existing stage 1.

Sélectionner l’étape 1 que l’on la deuxième que l’on a créé (l’étape d’enrôlement sera automatique) , ordre saisir 30 2 et cliquer sur Create 3.

L’étape est ajoutée.

Configuration du fournisseur pour utiliser le flux d’authentification

La dernière étape pour rendre opérationnelle notre configuration, c’est de configurer le fournisseur (provider) pour utiliser le flux que (flow) que l’on vient de créer.

Depuis l’aperçu du fournisseur, cliquer sur le bouton Edit 1.

Dans la partie Advanced flow settings, dans le champ Authentification flow 1 sélectionner le flux que l’on vient de créer et cliquer sur Update 2.

La configuration est terminée.

Tester le MFA par l’adresse e-mail

Se connecter à l’application où le fournisseur a été configuré avec le nouveau flux, après l’étape du mot de passe, il faut saisir le code OTP qui est envoyé par e-mail.

Restreindre l’OTP e-mail aux adresses externes avec Authentik

Afin de renforcer la sécurité des accès externes, il peut être pertinent d’exiger une vérification supplémentaire lors de l’authentification.

Limiter l’OTP par e-mail aux adresses externes permet de s’assurer que l’utilisateur a toujours accès à sa boîte mail, ce qui est particulièrement utile pour les prestataires, partenaires ou comptes temporaires, dont les accès peuvent évoluer dans le temps.

Pour limiter OTP aux adresses e-mail externes, il faut ajouter une stratégie (policy) que nous allons ensuite appliquer à l’étape dans le flux.

Depuis la liste des stratégies (policies), cliquer sur le bouton Create 1.

Choisir le type : Expression policy 1 et cliquer sur Next 2.

Nommer la stratégie 1 et entrer le code ci-dessous 2 puis cliquer sur Finish 3.

email = context.get("pending_user").email.lower()
if not email:
    return False

excluded_domains = ["domain-1.tld", "domain-2.tld"]
is_internal = any(email.endswith(domain) for domain in excluded_domains)
return not is_internal

Adapter les domaines de la ligne 5 à votre environnement

La stratégie est créé, il faut maintenant l’assigner.

Retourner sur le flux et la liste des étapes, déplier l’étape de l’OTP 1 et cliquer sur Bind existing Policy / Group / User 2.

Sélectionner la stratégie 1 et cliquer sur Create 2.

La stratégie est ajoutée.

Conclusion

La mise en place d’un OTP par e-mail conditionnel dans Authentik permet de trouver un juste équilibre entre sécurité et simplicité d’usage.
En réservant cette vérification supplémentaire aux comptes externes, comme les prestataires ou partenaires, on s’assure que l’utilisateur dispose toujours d’un accès valide à sa boîte mail, sans alourdir l’expérience des utilisateurs internes.

Grâce aux Expression Policies et aux policy bindings, Authentik offre une grande flexibilité pour adapter les mécanismes d’authentification aux différents profils d’utilisateurs. Cette approche peut facilement être étendue à d’autres critères (groupes, réseaux, applications) et constitue une première étape efficace avant d’envisager des méthodes plus fortes comme le TOTP ou le WebAuthn.

FAQ

L’OTP par e-mail est-il envoyé à chaque connexion ?

Oui, à condition d’utiliser le Email Authenticator Validation Stage.
Le Setup Stage ne sert qu’à enregistrer l’authentificateur une seule fois par utilisateur.

Peut-on limiter l’OTP uniquement à certains domaines e-mail ?

Oui. Authentik permet de conditionner un stage via une Expression Policy, par exemple pour exclure des domaines internes et n’appliquer l’OTP qu’aux adresses externes.

L’OTP e-mail est-il suffisant pour des comptes administrateurs ?

Non, ce n’est pas recommandé.
L’OTP par e-mail convient surtout aux comptes externes ou temporaires. Pour les comptes sensibles, il est préférable d’utiliser TOTP, WebAuthn ou une clé de sécurité matérielle.

Que se passe-t-il si l’utilisateur n’a plus accès à sa boîte e-mail ?

L’authentification échouera, ce qui est précisément l’objectif pour les comptes externes.
Un administrateur devra alors mettre à jour l’adresse e-mail ou ajuster les politiques d’accès.

Peut-on combiner l’OTP e-mail avec d’autres conditions ?

Oui. Les policies Authentik peuvent être combinées pour prendre en compte :
– le domaine e-mail
– l’appartenance à un groupe
– le réseau IP
– ou l’application cible
Cela permet de construire une authentification adaptative selon le contexte.

Romain Drouche
Architecte Système | MCSE: Core Infrastructure
Expert en infrastructures IT avec plus de 15 ans d’expérience sur le terrain. Actuellement Chef de projet Systèmes et Réseaux et Référent SSI (Sécurité des Systèmes d’Information), je mets mon expertise au service de la fiabilité et de la sécurité des environnements technologiques.