L’authentification est une fonctionnalité indispensable dans le développement applicatif et est omniprésente dans nos usages digitaux du quotidien. Au fil des années, de nombreux standards (SAML, OAuth, OIDC pour ne citer qu’eux) ont vu le jour afin de répondre aux enjeux et contraintes amenés par les nouvelles technologies.
Préambule
Depuis janvier 2019, le W3C a publié un nouveau standard (pour le Web, donc) nommé WebAuthn.
Son objectif ? Proposer une authentification web à l’aide de clés asymétriques.
Sa promesse ? Proposer une API Web pour en finir avec l’identification par mot de passe que vous connaissez, qui représente 81% des piratages de comptes.
WebAuthn fait en réalité partie d’un projet plus ambitieux : FIDO2. Il vise à standardiser les processus d’authentification sécurisés et sans mot de passe et dépasse le cadre des navigateurs et du Web.
Grâce à WebAuthn, vous allez pouvoir proposer à vos utilisateurs :
- Une authentification multi-facteurs (2FA) basée sur une saisie de mot de passe et l’utilisation d’un device compatible FIDO2 (le scénario le plus répandu aujourd’hui) ;
- Une nouvelle expérience d’authentification sans mot de passe (🍾). En fait, vous en bénéficiez déjà avec vos terminaux mobiles via le déverrouillage par empreinte ou reconnaissance faciale par exemple.
Je vous invite à consulter ce guide pour plus de détails et ce site pour vous amuser avec votre matériel compatible FIDO2.
Keycloak, toujours un coup d’avance
FICHE TECHNIQUE
Keycloak : 8.0.0 ou ultérieur
Authenticator FIDO2 Compatible : YubiKey 5 Series & Apple MacOs Touch Id
Navigateurs compatibles : Chrome 78
PRE-REQUIS
Keycloak 8.0.0 ou ultérieur installé
Vous n’êtes pas sans savoir que nous évangélisons Keycloak depuis plusieurs années chez Ineat, notamment pour les fonctionnalités proposées et la flexibilité de la solution.
La version 8.0.0 de Keycloak est sortie mi novembre et propose un premier support de WebAuthn avec de l’authentification sans password et du 2FA WebAuthn.
Dans ce billet, vous allez découvrir comment configurer Keycloak pour utiliser cette nouvelle fonctionnalité. L’occasion pour nous de vous présenter une fonctionnalité encore jamais évoquée dans nos articles : la création et l’utilisation de Flows d’authentification personnalisés.
Pour dérouler ce tutoriel, vous avez besoin de la version 8.0.0 de Keycloak et d’un device compatible FIDO2.
Configurer un flow 2FA WebAuthn
➡️Commencez par créer un domaine webauthn
➡️Rendez vous dans le menu Authentication
Keycloak vous propose l’ensemble des flows pré-configurés (au nombre de 8) et utilisés par défaut. Le flow qui nous intéresse est le flow Browser
, adapté au web.
Pour personnaliser un flow, deux possibilités :
- En créer un from-scratch grace au bouton
New
- Dupliquer et modifier un flow existant grace au bouton
Copy
➡️Dupliquez le flow Browser et nommez le Webauthn browser
A ce stade vous avez un flow Browser personnalisable. Vous pouvez ré-agencer les différentes exécutions, les supprimer ou en ajouter.
Consultez ce chapitre pour comprendre comment se déroule leur enchainement.
➡️Sur la ligne Webauthn Browser Browser - Conditional OTP
, cliquez sur Actions
puis Add execution
➡️Choisissez WebAuthn Authenticator
en bas de la liste
➡️Activez la (REQUIRED
) et désactivez OTP Form
(DISABLED
)
Pour pouvoir utiliser un Authenticator, l’utilisateur doit l’enregistrer à sa première connexion. Vous devez activer la Required Action
associée au préalable :
➡️Basculez sur l’onglet Required Action
, cliquez sur Register
puis sélectionnez WebAuthn Register
dans la liste
Activer le flow d’authentification
Votre flow d’authentification est maintenant prêt à être utilisé. Vous pouvez activer un flow d’authentification
- Au domaine
- Menu
Authentication
, ongletBindings
- Selection du flow dans
Browser Flow
- Menu
- Au client
- Menu
Clients
, puis selection du client - En bas de la page,
Authentication Flow Overrides
- Selection du flow dans
Browser Flow
- Menu
➡️Configurez le flow pour le client account
Utiliser le flow
➡️Créez un utilisateur pour les besoins de la démo en lui assignant la Required User Actions
Webauthn Register
➡️Assignez un mot de passe non temporaire à cet utilisateur
➡️Connectez-vous sur http://localhost:8080/auth/realms/webauthn/account/ pour tester le 2FA :
Depuis la version 8.0.0 de Keycloak, l’onglet Credentials
de l’utilisateur a évolué pour vous proposer la liste des certificats de connexion :
Configurer un flow password-less
Si vous souhaitez offrir une expérience sans saisie de mot de passe à l’utilisateur, l’exécution Username Password Form
sera alors remplacée par l’exécution Username Form
car il reste nécessaire de connaitre l’identité de l’utilisateur à authentifier.
Notez que cela permet inévitablement une attaque d’énumération d’utilisateur sur votre serveur Keycloak
Documentation de référence pour la configuration du password-less
Policies WebAuthn
Keycloak propose un onglet d’administration pour configurer le comportement de WebAuthn : dans le menu Authentication
, onglet WebAuthn Policy
:
Vous trouverez ci-dessous les liens vers la spécification de chaque attribut pour vous aider à faire un choix de configuration :
- Attestation Conveyance Preference
- Authenticator attachement
- Require Resident Key
- User Verification Requirement
- Timeout
- Acceptable AAGUIDS
Limitations actuelles
- L’utilisateur n’a pas la main pour configurer ses authenticators ;
- La
Webauthn Policy
ne s’applique pour l’instant qu’au domaine. Une policy au client pourrait être un plus.
Vivement les prochaines releases
Encore une fois, cette version 8.0.0 apporte son lot de nouveautés. La roadmap du produit nous réserve encore des surprises, notamment avec l’arrivée future de Keycloak.X.
Evidemment, nous ne manquerons pas de vous faire part de ces nouveautés dans de prochains articles.