Authn.tech
Startseite
  • SAML 2.0
  • OAuth 2.0
  • OIDC
  • WebAuthn / Passkey
  • MFA / TOTP
  • LDAP
  • Alle Tools
  • JWT dekodieren
  • JWT signieren
  • JWK erzeugen
  • JWK → PEM
  • PEM → JWK
  • PKCE erzeugen
  • OIDC Discovery
  • TOTP
  • WebAuthn
  • SAML-Codec
  • SAML Metadata
  • SAML Response
  • X.509-Zertifikat
  • PEM prüfen
  • Base64URL
  • LDAP-Filter
  • Übersicht & Rollen
  • OIDC Mock
  • SAML Mock
  • Mail-Server
  • LDAP-Verzeichnis
  • OIDC-Login-Demo
  • SAML-Login-Demo
  • 简体中文
  • English
  • Deutsch
GitHub
Startseite
  • SAML 2.0
  • OAuth 2.0
  • OIDC
  • WebAuthn / Passkey
  • MFA / TOTP
  • LDAP
  • Alle Tools
  • JWT dekodieren
  • JWT signieren
  • JWK erzeugen
  • JWK → PEM
  • PEM → JWK
  • PKCE erzeugen
  • OIDC Discovery
  • TOTP
  • WebAuthn
  • SAML-Codec
  • SAML Metadata
  • SAML Response
  • X.509-Zertifikat
  • PEM prüfen
  • Base64URL
  • LDAP-Filter
  • Übersicht & Rollen
  • OIDC Mock
  • SAML Mock
  • Mail-Server
  • LDAP-Verzeichnis
  • OIDC-Login-Demo
  • SAML-Login-Demo
  • 简体中文
  • English
  • Deutsch
GitHub
  • WebAuthn / Passkey

    • WebAuthn Übersicht
    • Kernkonzepte
    • Registrations- und Authentifizierungsablauf
    • Parameter- und Datenstruktur-Referenz

Parameter- und Datenstruktur-Referenz

Diese Seite ist eine Feldebenen-Schnellansicht. Konzeptionische Erklärungen siehe Kernkonzepte, Verwendung siehe Ablauf. Sofern nicht anders angegeben, sind binäre Felder im Browser-API ArrayBuffer/BufferSource, in JSON-Übertragung vertragt sich auf Base64URL (kein Padding) Kodierung.

PublicKeyCredentialCreationOptions (Registrierung)

Übergeben an navigator.credentials.create({ publicKey }).

FeldTypErforderlichBeschreibung
rpObjektJaRP-Information. rp.id ist rpId (Standard ist gültige Domäne der aktuellen Origin), rp.name ist Anzeigename.
userObjektJauser.id (binär, Benutzer opaque Handle, keine PII wie E-Mail), user.name (Anmeldename), user.displayName (Anzeigename).
challengeBufferSourceJaEinmalige Zufalls-Herausforderung, ≥ 16 Bytes.
pubKeyCredParamsArrayJaVon RP akzeptierte Algorithmen, nach Priorität, jeder Eintrag { type: "public-key", alg }, alg ist COSE-Kennung (siehe unten).
timeoutnumberNeinMillisekunden, empfohlen 60000. Nur Hinweis, Browser kann ignorieren.
excludeCredentialsArrayNeinBereits registrierte Anmeldedaten-Liste, verhindert Doppel-Registrierung auf demselben Authentifizierer. Jeder Eintrag { type, id, transports? }.
authenticatorSelectionObjektNeinAuthentifizierer-Filter, siehe unten.
attestationstringNeinnone (Standard/empfohlen), indirect, direct, enterprise.
extensionsObjektNeinErweiterungen, z.B. credProps (bericht ob resident key erstellt wurde).

authenticatorSelection Unterfelder

FeldWertBeschreibung
authenticatorAttachmentplatform / cross-platformBegrenzen auf Plattform-Authentifizierer oder Roaming-Sicherheitsschlüssel; weglassen = keine Begrenzung.
residentKeyrequired / preferred / discouragedErkennbare Anmeldedaten erstellen (Passkey). required erzwingt Residenz.
requireResidentKeybooleanAltes Feld, zur Kompatibilität behalten; true entspricht residentKey: "required".
userVerificationrequired / preferred / discouragedBenutzerverifizierung (UV) erforderlich.

PublicKeyCredentialRequestOptions (Authentifizierung)

Übergeben an navigator.credentials.get({ publicKey }).

FeldTypErforderlichBeschreibung
challengeBufferSourceJaEinmalige Zufalls-Herausforderung.
timeoutnumberNeinMillisekunden, Hinweis.
rpIdstringNeinRP-Kennung, Standard ist gültige Domäne der aktuellen Origin; muss bei Registrierung konsistent sein.
allowCredentialsArrayNeinZulässige Anmeldedaten-Liste { type, id, transports? }. Bei namenloser Passkey-Anmeldung leer lassen.
userVerificationstringNeinrequired / preferred / discouraged.
extensionsObjektNeinAuthentifizierungs-Erweiterungen.

clientDataJSON

Von Browser erzeugt JSON (als UTF-8 Bytes zurückgegeben), Seiten-JS kann nicht manipulieren.

FeldBeschreibung
typeRegistrierung ist "webauthn.create", Authentifizierung ist "webauthn.get".
challengeBase64URL-Kodierung von RP-ausgegebener Herausforderung.
originVollständige Origin der Anfrage-Seite, z.B. https://login.example.com.
crossOriginOb in Cross-Origin iframe ausgelöst, normalerweise false.
topOriginNur wenn crossOrigin ist true, oberste Level Origin.

Beispiel:

{
  "type": "webauthn.get",
  "challenge": "YXV0aC1jaGFsbGVuZ2UtcmFuZG9t",
  "origin": "https://login.example.com",
  "crossOrigin": false
}

authenticatorData Struktur

Binäre Daten, sowohl bei Registrierung als auch Authentifizierung zurückgegeben (bei Registrierung in attestationObject verpackt). Byte-Layout:

OffsetLängeFeldBeschreibung
032 BrpIdHashSHA-256(rpId), RP muss überprüfen.
321 BflagsBit-Flaggen, siehe unten.
334 BsignCountBig-Endian 32-Bit Signatur-Zähler.
37VariabelattestedCredentialDataNur wenn AT Bit 1 ist (Registrierung), enthält AAGUID (16B), credentialId Länge (2B), credentialId, credentialPublicKey (COSE).
DanachVariabelextensionsNur wenn ED Bit 1, CBOR kodiert.

flags Bit-Definition

BitNameBedeutung
Bit 0 (0x01)UPUser Present (Benutzer anwesend).
Bit 2 (0x04)UVUser Verified (Benutzer verifiziert, Multi-Faktor).
Bit 3 (0x08)BEBackup Eligible (Anmeldedaten können gesichert/synchronisiert werden).
Bit 4 (0x10)BSBackup State (Anmeldedaten derzeit gesichert/synchronisiert).
Bit 6 (0x40)ATAttested credential data included (Registrierung auf 1 setzen).
Bit 7 (0x80)EDExtension data included.

Tips

BE/BS unterscheiden synchronisierte Passkeys (geräteübergreifend) von gerätebindenden Anmeldedaten. Wenn Geschäftsanforderung ist, dass Anmeldedaten nicht das Gerät verlassen können, überprüfen Sie BE=0.

COSE Algorithmus-Kennungen

pubKeyCredParams[].alg verwendet COSE Algorithm-Werte (IANA registriert, alle negativ):

algNameBeschreibungEmpfehlung
-7ES256ECDSA + P-256 + SHA-256Erste Wahl, fast alle Authentifizierer
-8EdDSAEd25519Falls unterstützt, optional, gute Leistung
-35ES384ECDSA + P-384 + SHA-384Selten
-36ES512ECDSA + P-521 + SHA-512Selten
-257RS256RSASSA-PKCS1-v1_5 + SHA-256Älter TPM/Windows Hello kompatibel, empfohlen mit bereitgestellt
-258RS384RSASSA-PKCS1-v1_5 + SHA-384Sehr selten
-259RS512RSASSA-PKCS1-v1_5 + SHA-512Sehr selten
-37PS256RSASSA-PSS + SHA-256Einige TPM

Tips

In der Praxis reicht die Bereitstellung von [-7, -257] für fast alle Authentifizierer: -7 (ES256) deckt moderne Plattformen und Sicherheitsschlüssel ab, -257 (RS256) ist mit einigen Windows Hello / TPM Szenarien kompatibel.

Fehlerbehebelts-Schnellansicht-Tabelle

Symptom / FehlerHäufige UrsacheVerarbeitung
SecurityError (create/get)rp.id/rpId ist nicht gültige Domäne der aktuellen Origin; nicht HTTPS (außer localhost)rpId zu registrierbarer Domäne korrigieren; HTTPS verwenden
NotAllowedErrorBenutzer abgebrochen, Timeout, oder Origin/Berechtigungsrichtlinie nicht erlaubtWiederholung vorschlagen; timeout und Permissions-Policy: publickey-credentials-* überprüfen
InvalidStateError (Registrierung)Dieser Authentifizierer bereits registriert (trifft excludeCredentials)"Dieses Gerät ist bereits registriert" vorschlagen, zur Anmeldung führen
ConstraintErrorresidentKey: required oder UV-Anforderung Authentifizierer kann nicht erfüllenZu preferred lockern oder Authentifizierer wechseln
Server Challenge stimmt nicht übereinChallenge nicht gespeichert/abgelaufen; Base64URL DekodierungsfehlerServer speichert und bindet Sitzung; Base64URL bestätigen
Server Origin Überprüfung fehlgeschlagenWhitelist fehlt diese Origin; Protokoll/Port inkonsistentZulässiges Origin-Set genau konfigurieren
Signatur-Validierung fehlgeschlagenSignatur-Datenkettungsfehler (sollte authData ‖ SHA-256(clientDataJSON) sein); Algorithmus nicht konsistent mit gespeichert; ECDSA-Signatur ist DER kodiert braucht richtiges ParsingSignatur-Prozess überprüfen, bevorzugt etablierte Bibliothek verwenden
signCount immer 0Synchronisierte Passkey / Einige Plattform-AuthentifiziererNormal ansehen, nicht danach ablehnen
Base64URL verworrene ZeichenMit Standard-Base64 gemischt +//=Base64URL ohne Padding Kodierung vereinheitlichen

Verwandte Lesungen: Übersicht · Kernkonzepte · Registrations- und Authentifizierungsablauf. Multi-Faktor und Verbund-Anmeldung siehe ../mfa/, ../oidc/.

Zuletzt aktualisiert: 06.07.26, 07:49
Mitwirkende: linux, Claude Opus 4.8
Prev
Registrations- und Authentifizierungsablauf