Das Projekt findet sich hier auf Github: https://github.com/ateachment/SimpleAuthService/tree/master

Registrierung des Passkey 

Windows Hello bestätigt als Authenticator die Registrierung eines Passkeys für die WebAuthn-Authentifizierung.
Windows Hello bestätigt als Authenticator die Registrierung eines Passkeys für die WebAuthn-Authentifizierung

Passkey-Registrierung (WebAuthn-Ablauf)

  1. Benutzer startet Registrierung
    Der Benutzer klickt in der Webanwendung auf „Passkey registrieren“.
  2. Server erzeugt eine Challenge
    Der Server erstellt eine zufällige Challenge und sendet die Registrierungsoptionen an den Browser.
  3. Browser ruft den Authenticator auf
    Der Browser startet über die WebAuthn-API den lokalen Authenticator, z. B. Windows Hello.
  4. Benutzer bestätigt seine Identität
    Der Authenticator prüft die Benutzeridentität, z. B. mit
    • PIN
    • Fingerabdruck
    • Gesichtserkennung
  5. Passkey wird erstellt Der Authenticator erzeugt ein Schlüsselpaar:
    • Private Key bleibt sicher auf dem Gerät.
    • Public Key wird an die Webanwendung übermittelt.
  6. Server speichert den Public Key
    Der Server speichert:
    • Credential ID
    • Public Key
    • Signaturzähler (signCount)

Damit ist der Passkey für zukünftige Logins registriert.

Datenbank-Schema

Das Datenbank-Schema muss um eine weitere Tabelle erweitert bzw. eine 1:n-Relation erweitert werden, weil ein Benutzer für jedes Gerät einen Passkey erstellen muss, um sich damit an einer Webseite anmelden zu können:

-- Passkey Authentication - more than one passkey per user for different devices needed.
CREATE TABLE tblpasskey (
  credentialID VARBINARY(255) NOT NULL,  -- short binary identifier for the passkey credential, unique for each passkey
  userID INT NOT NULL,
  publicKey BLOB NOT NULL,  -- larger binary data structure (COSE key)
  signCount INT DEFAULT 0,  -- to prevent replay attacks by tracking the number of times a passkey has been used
  created DATETIME DEFAULT current_timestamp(),
  PRIMARY KEY (credentialID)
);


(Der COSE Key ist der öffentliche Schlüssel eines Passkeys in einem standardisierten Binärformat, das von WebAuthn verwendet wird.)

Anmeldung mit Passkey

Anmeldung mit Passkey (Windows Hello als Authenticator)
Anmeldung mit Passkey (Windows Hello als Authenticator)

Passkey-Login (WebAuthn-Authentifizierung)

  1. Benutzer startet Anmeldung
    Der Benutzer klickt auf „Login mit Passkey“ auf der Webseite.
  2. Server erzeugt eine Challenge
    Der Server erstellt eine zufällige Challenge und sendet sie zusammen mit den Login-Optionen an den Browser.
  3. Browser ruft den Authenticator auf
    Der Browser startet über die WebAuthn-API den Authenticator, z. B.
    • Windows Hello
    • Smartphone-Passkey
    • Sicherheitsschlüssel (FIDO2)
  4. Benutzer bestätigt seine Identität
    Der Authenticator fordert eine lokale Authentifizierung, z. B.:
    • PIN
    • Fingerabdruck
    • Gesichtserkennung
  5. Challenge wird signiert
    Der Authenticator:
    • verwendet den gespeicherten privaten Schlüssel
    • signiert die Challenge des Servers
    • Gesichtserkennung
    Der private Schlüssel verlässt das Gerät niemals.
  6. Browser sendet Antwort an den Server
    Der Browser übermittelt an den Server:
    • Credential ID
    • Signatur
    • Authenticator-Daten
    • signCount
  7. Server prüft die Signatur
    Der Server verwendet den gespeicherten Public Key, um zu prüfen:
    • ob die Signatur gültig ist,
    • ob die Challenge korrekt ist,
    • ob der Signaturzähler plausibel ist.
  8. Login erfolgreich
    Ist die Prüfung erfolgreich, wird der Benutzer angemeldet.

Last modified: Friday, 13 March 2026, 7:43 PM