Gepubliceerd: 9 mei 2025, Laatst bijgewerkt: 22 december 2025
Wachtwoorden bieden een sterke, phishingbestendige authenticatie. Het kan echter lastig zijn om gebruikers ze te laten accepteren. Met automatische wachtwoordaanmaak kunt u wachtwoorden voor uw gebruikers op het juiste moment genereren, zolang ze maar al een wachtwoord voor uw site hebben opgeslagen. Conditional Create, waarmee automatische wachtwoordaanmaak mogelijk is, maakt deel uit van de WebAuthn-specificatie.
Hoe het werkt
Om gebruikers te helpen gemakkelijker wachtwoorden te accepteren, kunt u gebruikmaken van de WebAuthn API-functie genaamd Conditional Create . Met Conditional Create kan uw site een wachtwoord voor de gebruiker aanvragen zonder dat de gebruiker hiervoor iets hoeft te doen.
Deze workflow werkt wanneer aan de volgende voorwaarden wordt voldaan:
- De gebruiker heeft een wachtwoord opgeslagen in zijn standaard wachtwoordmanager.
- Het wachtwoord is recent gebruikt. Roep idealiter de functie Conditional Create direct aan na een succesvolle aanmelding met een wachtwoord.
Als aan beide voorwaarden is voldaan, kunt u de wachtwoordmanager vragen een toegangscode voor de gebruiker aan te maken door de functie 'Voorwaardelijk aanmaken' aan te roepen. Nadat de toegangscode succesvol is aangemaakt, wordt de gebruiker hiervan op de hoogte gesteld, afhankelijk van de gebruikte wachtwoordmanager.
Verenigbaarheid
Conditional Create wordt ondersteund door Safari op macOS en alle browsers op iOS , evenals Chrome op desktop en Chrome op Android .
Deze ondersteuning betekent dat het werkt met de respectievelijke standaard wachtwoordproviders: iCloud Keychain (Wachtwoorden) in Safari op macOS en iOS, en Google Password Manager in Chrome op desktop en Android.
Aangezien iOS 18 of hoger en Android 14 of hoger ondersteuning bieden voor externe passkey-providers, ongeacht de browser die de gebruiker gebruikt, is de ondersteuning voor 'Conditional Create' afhankelijk van de passkey-provider. Als de geselecteerde passkey-provider 'Conditional Create' niet ondersteunt, wordt er geen nieuwe passkey aangemaakt.
Implementeer voorwaardelijke aanmaak
Het automatisch aanmaken van een toegangscode is gebaseerd op een functie van de WebAuthn API genaamd Conditional Create . Dit zijn reguliere WebAuthn create() -verzoeken waarbij de parameter mediation is ingesteld op "conditional" , wat vergelijkbaar werkt met het automatisch invullen van toegangscodes voor get() -verzoeken.
Gebruik de functie 'Voorwaardelijk aanmaken' nadat de gebruiker is ingelogd met een wachtwoord. Of het aanmaken lukt, hangt af van de wachtwoordmanager en of aan bepaalde voorwaarden wordt voldaan. Deze voorwaarden kunnen per wachtwoordmanager verschillen en in de loop van de tijd veranderen. In Chrome met Google Password Manager (GPM) moet de gebruiker bijvoorbeeld recentelijk ingelogd zijn met een opgeslagen wachtwoord voor de website.
Als de browser de toegangssleutel succesvol aanmaakt, retourneert deze een openbare sleutel. Stuur deze sleutel naar uw backend om de registratie te voltooien en toekomstige authenticatie mogelijk te maken.
Kenmerkdetectie
U kunt controleren of Conditional Create beschikbaar is in de browser door PublicKeyCredential.getClientCapabilities() aan te roepen. Kijk of het geretourneerde object true bevat voor de eigenschap conditionalCreate .
if (window.PublicKeyCredential && PublicKeyCredential.getClientCapabilities) {
const capabilities = await PublicKeyCredential.getClientCapabilities();
if (capabilities.conditionalCreate) {
// Conditional create is available
}
}
Als getClientCapabilities niet beschikbaar is, is Conditional Create ook niet beschikbaar.
Een wachtwoord voorwaardelijk aanmaken
Om automatisch een wachtwoord aan te maken, roep je navigator.credentials.create() aan, maar met mediation: "conditional" zoals hieronder.
const cred = await navigator.credentials.create({
publicKey: options,
// Request conditional creation
mediation: 'conditional'
});
U kunt het beste direct na het inloggen van een gebruiker de automatische aanmaak van een toegangssleutel inschakelen. Zo vergroot u de kans dat de wachtwoordmanager aan de criteria voor automatische aanmaak voldoet.
U kunt de resulterende openbare sleutelgegevens naar de server sturen om de toegangssleutel te verifiëren en te registreren . Zorg ervoor dat de gebruiker op de server is ingelogd.
Voorbehoud
De functie Conditional Create is op zichzelf niet moeilijk te implementeren, maar er zijn wel een aantal aandachtspunten bij de daadwerkelijke integratie ervan in een bestaand systeem.
Negeer de aanwezigheidsstatus en gebruikersverificatie van de gebruiker op de server.
Het registratieantwoord retourneert zowel "Gebruikersaanwezigheid" als "Gebruiker geverifieerd" als false , dus de server moet deze vlaggen negeren tijdens de verificatie van de inloggegevens .
Aborteer de lopende WebAuthn-oproep voordat een automatische wachtwoordaanmaak wordt uitgevoerd.
Wanneer de Relying Party (RP) verwacht dat de gebruiker inlogt met een toegangscode of een wachtwoord, is het uitvoeren van een voorwaardelijke GET-aanroep de beste optie . Dit kan ertoe leiden dat de voorwaardelijke GET-aanroep wordt geannuleerd voordat een voorwaardelijke CREATE-aanroep wordt uitgevoerd.
Om dit te doen, moet je AbortController gebruiken en .abort() aanroepen.
// To abort a WebAuthn call, instantiate an AbortController.
const controller = new AbortController();
const cred = await navigator.credentials.get({
publicKey: options,
signal: controller.signal,
// Request conditional get
mediation: 'conditional'
});
// Abort the call
controller.abort();
Negeer de uitzonderingen op een elegante manier.
Bij het voorwaardelijk aanmaken van een toegangscode zijn er een paar gevallen waarin u uitzonderingen moet negeren:
-
InvalidStateError: Er bestaat al een wachtwoord in de wachtwoordprovider (vergeet nietexcludeCredentialsop te geven). -
NotAllowedError: Het aanmaken van een wachtwoord voldoet niet aan de voorwaarde. -
AbortError: De WebAuthn-oproep is afgebroken.
Het weergeven van foutmeldingen in deze gevallen kan de gebruiker in verwarring brengen, omdat de browser ze stilzwijgend afhandelt: er wordt alleen een melding weergegeven bij succes, en bij fouten worden geen zichtbare berichten weergegeven.
Signaal wanneer het registreren van een wachtwoord mislukt
Als een wachtwoordcode wordt aangemaakt maar niet op de server wordt geregistreerd, zal de gebruiker een mislukte aanmeldpoging ervaren. Dit kan gebeuren wanneer de lijst met wachtwoordcodes tussen de wachtwoordcodeaanbieder en de server niet overeenkomt.
Om dergelijke situaties te voorkomen, kunt u de Signal API gebruiken om ze consistent te houden .
De upgrade van aanmelden zonder wachtwoord wordt niet ondersteund.
Op dit moment is het voorwaardelijk aanmaken van een toegangscode afhankelijk van het invoeren van een geldig wachtwoord door de gebruiker. Dit betekent dat methoden voor aanmelden zonder wachtwoord, zoals magic links, telefoonnummerverificatie of identiteitsfederatie, niet aan de voorwaarde voldoen.
Samenvatting
Het automatisch aanmaken van wachtwoorden kan de acceptatie van wachtwoorden op uw website versnellen, waardoor gebruikers gemakkelijker kunnen overstappen van wachtwoorden naar een veiligere authenticatiemethode.
Voor meer informatie over passkeys kunt u beginnen bij Wachtwoordloos inloggen met passkeys .