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:
- Browser usa WebAuthn dal frontend.
- Browser chiama solo endpoint del tuo backend.
- 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
passkeycome 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
- Frontend richiede opzioni al backend.
- Backend risolve l’utente autenticato e legge
donutwork_external_iddal DB. - Backend chiama Donutwork:
POST /2026-02-01/idp/{externalUserId}/passkey/options.json
- Frontend esegue
navigator.credentials.create(...). - Frontend invia il payload al backend.
- Backend conferma su Donutwork:
POST /2026-02-01/idp/{externalUserId}/passkey/confirm.json
Autenticazione
- Frontend richiede challenge al backend.
- Backend chiama Donutwork:
POST /2026-02-01/idp/passkey/challenge.json
- Frontend esegue
navigator.credentials.get(...). - Frontend invia assertion al backend.
- 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
- statusNon 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: