Donutwork Docs
Sentinel

Passkey MFA Delegata

Come funziona la passkey delegata con Sentinel/IDP, benefici e pattern di integrazione sicuro con relay backend.

Passkey MFA Delegata

Sentinel permette di offrire autenticazione passkey (WebAuthn) ai tuoi utenti tramite IDP Donutwork, mantenendo la API key solo lato server.

Pattern raccomandato in produzione:

  1. Browser usa WebAuthn dal frontend.
  2. Browser chiama solo endpoint del tuo backend.
  3. Backend chiama Donutwork in S2S (https://api.hub.donutwork.com) con Bearer API key.

Vantaggi

  • Resistenza elevata al phishing rispetto a password + OTP.
  • UX migliore: biometria o sblocco dispositivo invece di codici manuali.
  • Riduzione attrito in login frequenti.
  • Credenziali legate al dispositivo/autenticatore.

Come si integra con Sentinel

  • Sentinel può raccomandare passkey come fattore preferito nei casi ad alto rischio.
  • Gli eventi passkey sono tracciabili a livello centrale.
  • Coesiste con OTP: puoi mantenere fallback durante il rollout.

Flusso operativo

Registrazione

  1. Frontend richiede opzioni al backend.
  2. Backend risolve l’utente autenticato e legge donutwork_external_id dal DB.
  3. Backend chiama Donutwork:
    • POST /2026-02-01/idp/{externalUserId}/passkey/options.json
  4. Frontend esegue navigator.credentials.create(...).
  5. Frontend invia il payload al backend.
  6. Backend conferma su Donutwork:
    • POST /2026-02-01/idp/{externalUserId}/passkey/confirm.json

Autenticazione

  1. Frontend richiede challenge al backend.
  2. Backend chiama Donutwork:
    • POST /2026-02-01/idp/passkey/challenge.json
  3. Frontend esegue navigator.credentials.get(...).
  4. Frontend invia assertion al backend.
  5. Backend verifica su Donutwork:
    • POST /2026-02-01/idp/passkey/verify.json

Mapping identità consigliato

users table
- id (PK interno)
- email (unique)
- password_hash
- donutwork_external_id
- status

Non fidarti mai di passkey.id inviato dal browser per ownership/security check. Risolvi sempre externalUserId lato server da sessione/token autenticato.


Esempi backend (Node, Django, PHP)

Per esempi completi con mock auth DB (email -> internal user -> donutwork_external_id) e relay S2S:


API correlate

On this page