Zum Inhalt springen

Sicherheit

Passkeys und Zwei-Faktor-Anmeldung (nur im Dashboard).
POST/api/v1/security/login/passkey

Öffentlich. Prüft die Passkey-Signatur und gibt ein Firebase Custom Token aus (signInWithCustomToken). Die Sitzung gilt als zweifach bestätigt. E-Mail-Bestätigung und Freischaltung werden danach wie gewohnt geprüft.

Ohne Anmeldung.

Body (JSON)

  • challengeIdstringPflicht
    max. 100 Zeichen
  • responseWebAuthnAuthenticationResponsePflicht
    • idstringPflicht
      max. 4096 Zeichen
    • rawIdstringPflicht
      max. 4096 Zeichen
    • type"public-key"Pflicht
    • responseobjectPflicht
      • clientDataJSONstringPflicht
        max. 4096 Zeichen
      • authenticatorDatastringPflicht
        max. 4096 Zeichen
      • signaturestringPflicht
        max. 4096 Zeichen
      • userHandlestring
        max. 1024 Zeichen
    • authenticatorAttachmentstring
    • clientExtensionResultsobject
      Standard: {}

Antwort 200 · MfaSession

  • customTokenstringPflicht
    Firebase Custom Token. Mit signInWithCustomToken() anmelden – die neue Sitzung gilt als zweifach bestätigt.
  • method"passkey" | "totp" | "recovery_code"Pflicht
  • expiresAtstringPflicht
    Bis wann die Bestätigung gilt; danach wird der zweite Faktor erneut abgefragt.

Mögliche Fehler: 400, 403, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/security/login/passkey' \
  -H 'Content-Type: application/json' \
  -d '{
  "challengeId": "string",
  "response": {
    "id": "string",
    "rawId": "string",
    "type": "public-key",
    "response": {
      "clientDataJSON": "string",
      "authenticatorData": "string",
      "signature": "string",
      "userHandle": "string"
    },
    "authenticatorAttachment": "string",
    "clientExtensionResults": {}
  }
}'
Antwort 200
{
  "customToken": "string",
  "method": "passkey",
  "expiresAt": "string"
}
POST/api/v1/security/login/passkey-options

Öffentlich. Liefert die Optionen für navigator.credentials.get() (auffindbare Passkeys, Nutzerprüfung erforderlich). Danach POST /security/login/passkey.

Ohne Anmeldung.

Antwort 200 · WebAuthnChallenge

  • challengeIdstringPflicht
    Beim Abschluss mitsenden
  • optionsobjectPflicht
    An navigator.credentials (bzw. @simplewebauthn/browser) übergeben
  • expiresAtstringPflicht
    Zeitpunkt (ISO 8601)

Mögliche Fehler: 400, 429, 500

curl -X POST 'https://www.debt-flow.io/api/v1/security/login/passkey-options'
Antwort 200
{
  "challengeId": "string",
  "options": {},
  "expiresAt": "string"
}