TutorielGuides

Connexion par clé d'accès (passkey)

Sur cette page

Une clé d’accès (passkey) remplace le mot de passe par une paire de clés : la clé privée reste dans l’appareil de l’utilisateur (téléphone, Windows Hello, Touch ID, clé de sécurité, gestionnaire de mots de passe), TOSIAM ne garde que la clé publique. L’utilisateur se connecte en déverrouillant son appareil ; il n’y a rien à retenir ni à intercepter. Le protocole est WebAuthn, la partie navigateur de FIDO2.

Ce tutoriel construit un parcours de connexion qui :

  • à la première connexion, demande le mot de passe puis propose de créer une clé d’accès ;
  • aux connexions suivantes, propose la clé d’accès dans les suggestions du champ identifiant, ou par un bouton Se connecter avec une clé d’accès, sans mot de passe.

Étape 1 : le service WebAuthn#

TOSIAM enregistre chaque clé d’accès comme une entrée de l’annuaire LDAP, sous ou=credentials. C’est le service WebAuthn Authenticator Service du royaume qui dit où et avec quel compte.

  1. Dans le royaume ref, ouvrez Services › Ajouter un service, choisissez WebAuthn Authenticator Service et cliquez sur Créer.
  2. Ouvrez le service. Ses valeurs par défaut visent l’annuaire de la QuickStart (localhost:50389, DN de base ou=credentials,dc=tosit,dc=org) ; il ne manque que le compte de liaison.
  3. Renseignez le DN du compte de liaison et son mot de passe, puis Enregistrer. Avec la QuickStart, le compte uid=tosiam,ou=system,dc=tosit,dc=org convient ; son mot de passe est celui de l’annuaire choisi à l’installation (TOSIAM_DB_PASSWORD).
Réglages du service WebAuthn Authenticator Service : DN de base ou=credentials,dc=tosit,dc=org, DN du compte de liaison uid=tosiam,ou=system,dc=tosit,dc=org et mot de passe du compte de liaison Réglages du service WebAuthn Authenticator Service : DN de base ou=credentials,dc=tosit,dc=org, DN du compte de liaison uid=tosiam,ou=system,dc=tosit,dc=org et mot de passe du compte de liaison
Le compte de liaison (1) : sans mot de passe, aucune clé d’accès ne peut être enregistrée.

L’annuaire de la QuickStart contient déjà le schéma fido2Credential et la branche ou=credentials. Pour un autre annuaire, chargez d’abord ce schéma : voir Enregistrement et authentification du dispositif FIDO2 (legacy).

Étape 2 : le graphe#

Graphe connexion-passkey dans l'éditeur : page identifiant ou passkey, passkey utilisée ?, mot de passe, vérification du mot de passe, a déjà une passkey ?, enregistrement d'une passkey, puis succès ou échec Graphe connexion-passkey dans l'éditeur : page identifiant ou passkey, passkey utilisée ?, mot de passe, vérification du mot de passe, a déjà une passkey ?, enregistrement d'une passkey, puis succès ou échec
Le graphe connexion-passkey : la clé d’accès court-circuite le mot de passe ; sans clé, le mot de passe est demandé puis une clé est créée.
Faites défiler le tableau
ÉtapeNœudRôle
Identifiant ou passkeyPageNode (PasskeyConditionalAuthenticationNode + UsernameCollectorNode)Champ identifiant ; le navigateur y propose les clés d’accès de l’utilisateur, et un bouton ouvre directement le choix de la clé
Passkey utilisée ?PasskeyConditionalDecisionNodetrue si l’utilisateur s’est connecté avec une clé d’accès, false s’il a saisi son identifiant
Mot de passePasswordCollectorNodeDemande le mot de passe
Vérification du mot de passeDataStoreNodeContrôle dans l’annuaire du royaume
A déjà une passkey ?PasskeyEnrollmentCheckNodenotEnrolled si l’utilisateur n’a encore aucune clé d’accès
Enregistrement d’une passkeyPasskeyRegistrationNodeFait créer une clé d’accès par l’appareil et l’enregistre dans l’annuaire

La création de la clé est proposée, pas imposée : si l’utilisateur annule (sortie error), la connexion aboutit quand même, puisque son mot de passe est vérifié.

Les deux nœuds WebAuthn ont deux réglages obligatoires :

Faites défiler le tableau
RéglageValeur du tutorielRôle
rpIdlocalhostDomaine auquel la clé d’accès est rattachée. Le navigateur ne la proposera que sur ce domaine et ses sous-domaines
originhttp://localhost:8080Adresse exacte (schéma, hôte, port) de la page de connexion, vérifiée à chaque opération

Le graphe complet est disponible en JSON : connexion-passkey.json. Chaque nœud est décrit dans Nœuds : Passkeys / WebAuthn.

Étape 3 : importer et exposer le graphe#

Dans le royaume ref :

  1. Graphes d’authentification › Importer : choisissez connexion-passkey.json.
  2. Ouvrez le graphe et cliquez sur Exposer ce graphe comme parcours de connexion.
  3. Importez de nouveau connexion-passkey.json en choisissant Remplacer.

La troisième étape rétablit le champ stage de chaque nœud, que l’éditeur remplace par l’identifiant du nœud. Pour la première page, il vaut PasskeyConditionalAuthenticationNode-UsernameCollectorNode : c’est ce qui fait afficher le bouton et les suggestions de clés d’accès. L’explication complète est dans le tutoriel Double authentification TOTP.

Le parcours est accessible à l’adresse :

texte
http://localhost:8080/tosiam/auth/?realm=ref&module=connexion-passkey

Étape 4 : la première connexion#

Ouvrez l’adresse du parcours.

Page de connexion TOSIAM : bouton Se connecter avec une clé d'accès, séparateur ou, champ Username et bouton Se connecter Page de connexion TOSIAM : bouton Se connecter avec une clé d'accès, séparateur ou, champ Username et bouton Se connecter
La première page : le bouton pour les utilisateurs qui ont déjà une clé d’accès, le champ identifiant pour les autres.

L’utilisateur n’a pas encore de clé d’accès : il saisit son identifiant, puis son mot de passe. TOSIAM lui propose alors d’en créer une, et le navigateur ouvre sa fenêtre de création (empreinte, visage, code de l’appareil, ou choix d’un téléphone ou d’une clé de sécurité).

Écran Suivez les instructions de votre appareil pour créer une clé d'accès Écran Suivez les instructions de votre appareil pour créer une clé d'accès
Pendant que le navigateur crée la clé d’accès.

La clé est enregistrée et la connexion aboutit.

Étape 5 : se connecter avec la clé d’accès#

Déconnectez-vous et ouvrez de nouveau l’adresse du parcours. Deux façons de se connecter, sans mot de passe :

  • cliquer dans le champ identifiant : le navigateur propose la clé d’accès parmi ses suggestions de saisie automatique ; il suffit de la choisir et de déverrouiller l’appareil ;
  • cliquer sur Se connecter avec une clé d’accès : le navigateur ouvre directement le choix de la clé. C’est la voie à suivre avec une clé de sécurité USB ou NFC, que certains navigateurs ne proposent pas dans les suggestions.

TOSIAM retrouve l’utilisateur à partir de la clé choisie : il n’a même pas à saisir son identifiant.

Gérer les clés d’accès d’un utilisateur#

Les clés d’un utilisateur se listent et se suppriment par l’API REST, par exemple quand il a perdu son téléphone. Sans clé, il retombe sur le mot de passe à sa prochaine connexion, et TOSIAM lui propose d’en créer une nouvelle.

bash
# Lister les clés d'accès de dduck
curl "http://localhost:8080/tosiam/json/ref/users/dduck/devices/webauthn?_queryFilter=true" \
     -H "Accept-API-Version: resource=1.0, protocol=1.0" \
     -H "iPlanetDirectoryPro: <jeton administrateur>"

# Supprimer l'une d'elles, d'après son uuid
curl -X DELETE "http://localhost:8080/tosiam/json/ref/users/dduck/devices/webauthn/<uuid>" \
     -H "X-Requested-With: XMLHttpRequest" \
     -H "Accept-API-Version: resource=1.0, protocol=1.0" \
     -H "iPlanetDirectoryPro: <jeton administrateur>"

En production#

  • HTTPS est obligatoire : en dehors de localhost, les navigateurs refusent WebAuthn sur une page en HTTP.
  • rpId est le domaine de votre organisation, par exemple example.com, et origin l’adresse publique de la page de connexion, par exemple https://sso.example.com. Derrière un proxy ou un répartiteur de charge, c’est l’adresse vue par le navigateur qui compte.
  • Choisissez rpId une fois pour toutes : chaque clé d’accès est rattachée à ce domaine. Le changer rend toutes les clés existantes inutilisables, et les utilisateurs doivent en recréer une.
  • Donnez au compte de liaison du service WebAuthn les seuls droits nécessaires sur la branche ou=credentials, plutôt qu’un compte administrateur de l’annuaire.

En cas de problème#

Faites défiler le tableau
SymptômeCause probable
La première page n’affiche que le champ identifiant, sans bouton ni suggestion de clé d’accèsGraphe enregistré depuis l’éditeur : réimportez le JSON (étape 3)
La connexion par mot de passe aboutit, mais la clé d’accès ne fonctionne pas ensuiteService WebAuthn absent du royaume, ou compte de liaison incorrect (étape 1) : l’appareil a créé la clé mais TOSIAM n’a pas pu l’enregistrer. Supprimez-la de l’appareil, corrigez le service puis redémarrez TOSIAM : dans la version actuelle, une modification du service n’est pas toujours prise en compte à chaud
Le navigateur refuse de créer ou d’utiliser la clé d’accèsPage ouverte par une autre adresse que origin (par exemple 127.0.0.1 au lieu de localhost), ou page en HTTP ailleurs que sur localhost
La clé d’accès n’est pas proposée sur un autre site de l’organisationCe site n’est pas sous le domaine rpId

Pour aller plus loin#

Mis à jour le