PUT methods/{name}/ e {"enabled": true} sull’API di gestione dell’autenticazione della tua applicazione, oppure dalla console. La pagina di accesso ospitata mostra solo i metodi che hai abilitato.
Ogni chiamata JSON qui sotto inizia con una
transaction ottenuta da POST authorize/. La transazione dura 10 minuti. Un accesso riuscito restituisce {code, redirect_uri, state}. Scambia il codice con POST token/ entro 60 secondi (vedi token e JWKS).
Invece di un codice, una chiamata di accesso può restituire uno di questi passaggi. Completa il passaggio e riceverai il codice.
Password
POST password/ richiede transaction, email e password.
- Una password deve rispettare il tuo
password_min_length(8, 10, 12 o 14 caratteri; 10 per impostazione predefinita). Le password comuni e quelle solo numeriche vengono rifiutate conpassword_policy. Quando il controllo delle password compromesse è attivo, una password nota come compromessa viene rifiutata conpassword_breached. - Solo chi ha un’email verificata può accedere con una password.
- Una password errata, un’email sconosciuta, un’email non verificata, un account bloccato e un account a cui è stato impedito l’accesso ricevono tutti la stessa risposta:
400 {"error": "invalid_credentials"}. La tua interfaccia non può capire quale sia stato il motivo, e nemmeno un malintenzionato.
Registrazione
La registrazione verifica prima l’email. ChiamaPOST email/start/ con purpose: "signup", email e password, poi POST email/complete/ con il codice. L’account viene creato con un’email verificata.
signup_policydecide chi può registrarsi:anyone,invited(solo con un link di invito) oallowed_domains.- Con
allow_subaddresses: false(impostazione predefinita), un indirizzo con+nella parte locale viene rifiutato. - Quando il tuo branding imposta link ai termini o alla privacy, il modulo di registrazione ospitato chiede alla persona di accettarli.
Codice via email
POST email/start/ richiede transaction, purpose (login o signup) e email, e restituisce 202 {challenge, expires_in: 600}. La persona riceve un codice di 6 cifre valido per 10 minuti.
POST email/complete/ richiede transaction, purpose, challenge e code. Hai 5 tentativi, poi la persona deve richiedere un nuovo codice. La pagina ospitata offre un nuovo codice dopo 30 secondi.
Un codice di accesso per un indirizzo senza account crea un account quando la tua signup_policy lo consente. Questa è la registrazione senza password.
Link magico
La pagina ospitata invia un link di accesso valido per 15 minuti. Il link resta legato alla transazione PKCE originale, quindi funziona solo nel flusso che lo ha avviato. La persona conferma l’accesso nella pagina che si apre con il link. Per i link magici non esiste un endpoint JSON.Codice via telefono
POST phone/start/ richiede transaction, phone e, facoltativamente, channel (sms, predefinito, oppure whatsapp). Il numero viene normalizzato in E.164. Restituisce 202 {challenge, expires_in: 600}.
POST phone/complete/ richiede transaction, challenge e il code di 6 cifre. Hai 5 tentativi.
- I codici via telefono vengono inviati tramite la verifica telefonica di Didit. Abilita il metodo con il
workflow_iddi un workflow che contiene la verifica telefonica. - Un primo accesso con il telefono crea un account solo se
signup_policyèanyone. - Se l’invio non riesce, la chiamata restituisce
503 {"error": "delivery_unavailable"}.
Passkey
Le passkey usano WebAuthn. La parte affidante è l’origine di accesso della tua applicazione. Didit richiede una credenziale rilevabile (chiave residente) e richiede sempre la verifica dell’utente, come un’impronta digitale, il volto o il PIN del dispositivo. Didit non richiede l’attestazione.- Una sfida passkey dura 5 minuti.
- Aggiungere una passkey richiede una sessione creata negli ultimi 5 minuti. In caso contrario la chiamata restituisce
403 {"error": "reauthentication_required"}. Prima devi far accedere di nuovo la persona. - Un accesso con passkey conta come autenticazione a più fattori.
- Dopo la registrazione, la pagina ospitata propone di aggiungere una passkey (
passkeys/setup/begin/epasskeys/setup/complete/). - Le app Android registrate nell’applicazione possono usare le stesse passkey.
Accesso social
L’accesso con Google, Microsoft, Apple e GitHub usa le credenziali della tua app OAuth, impostate conPUT methods/{provider}/ e credentials: {client_id, client_secret}. Il callback del provider si trova sulla tua origine di accesso.
La prima volta che una persona accede con un provider, deve anche dimostrare di essere proprietaria dell’indirizzo email, con un codice (POST social/email/start/ e POST social/email/verify/). Gli accessi successivi con quel provider saltano questo passaggio.
GitHub non può dimostrare un accesso recente, quindi non viene offerto quando invii prompt=login o max_age.
SSO dell’organizzazione
L’SSO dell’organizzazione permette all’azienda di un cliente di accedere tramite il proprio provider di identità SAML o OIDC. Configuralo per ogni organizzazione cliente inorganizations/{id}/sso/ con protocol (saml o oidc), enabled e config.
- Puoi inviare al team IT del cliente un link di configurazione valido per 7 giorni.
- I metadati del tuo provider di servizi SAML sono pubblicati in
{origin}/sso/saml/metadata/. - L’accesso ospitato trova la connessione dal dominio dell’email verificata della persona, oppure da
organization=<slug>nell’URL di accesso.
Didit ID Wallet
Le persone che hanno già verificato la propria identità con Didit possono accedere con il loro Didit ID Wallet. Questo metodo è sempre attivo. Ilverified_identity della sessione contiene poi ciò che la persona ha scelto di condividere.
MFA
Il secondo fattore è un’app di autenticazione (TOTP) con codici di recupero, oppure una passkey.mfa_policydecide chi deve usare l’MFA:optional,everyoneoppureorganization_admins(il valore predefinito). Chi ha registrato un’app di autenticazione deve sempre usarla.- Per registrare un’app di autenticazione, chiama
POST mfa/enroll/con una sessione recente (creata entro 5 minuti). La risposta contiene{challenge, uri}; mostrauricome codice QR. Poi invia il primo codice aPOST mfa/confirm/. La risposta contiene 10 codici di recupero monouso. Mostrali una sola volta. - Durante l’accesso, invia un codice TOTP o un codice di recupero a
POST mfa/complete/con ilchallenge. Hai a disposizione 5 tentativi. Per usare una passkey, chiamaPOST mfa/passkey/begin/ePOST mfa/passkey/complete/. - I codici usano intervalli di 30 secondi. Un codice già accettato non può essere riutilizzato.
- I codici via SMS ed email non sono disponibili come secondo fattore.
Password dimenticata e reimpostazione
POST password-reset/start/ accetta email e restituisce 202 {"status": "sent", "expires_in": 1800}. La risposta è la stessa indipendentemente dal fatto che l’indirizzo abbia un account. Il link di reimpostazione è valido per 30 minuti.
POST password-reset/complete/ accetta token e password e restituisce {"status": "password_changed"}. Inoltre:
- rimuove un blocco,
- termina tutte le sessioni quando
revoke_on_password_changeè attivo (il valore predefinito), - invalida gli altri codici e link in sospeso per quella persona.
Inviti
Consignup_policy: "invited", possono registrarsi solo le persone invitate. Un link di invito è valido per 7 giorni e apre la pagina ospitata /invite.
Prosegui con token e JWKS, oppure leggi protezione dai bot per blocchi e sfide.