Get your free and exclusive +45-page Authentication Analytics Whitepaper
Torna alla panoramica

Confronto tra 9 librerie di implementazione server WebAuthn

Questo post ti aiuta a trovare la giusta libreria server WebAuthn per offrire le passkey. Vengono confrontate 9 librerie e fornita una strategia per trovare quella adatta.

Blog-Post-Author
Nicolai

Creato: 15 dicembre 2023

Aggiornato: 27 luglio 2026

Confronto tra 9 librerie di implementazione server WebAuthn

Questa pagina è stata tradotta automaticamente. Leggi la versione originale in inglese qui.

PasskeysCheatsheet Icon

Cheatsheet Passkeys. Guide pratiche, pattern di distribuzione e KPI per programmi passkey.

Ottieni la cheatsheet
Fatti chiave
  • SimpleWebAuthn (TypeScript, 1.000 stelle su GitHub) è considerata la più intuitiva e offre in modo unico sia una libreria server che una libreria frontend per l'implementazione delle passkey.
  • L'autenticazione tramite passkey richiede almeno quattro endpoint API di backend rispetto a uno per l'autenticazione tramite password, rendendo essenziale una libreria server WebAuthn per gestire la complessità crittografica.
  • py_webauthn (Python) è ideale per test rapidi: le opzioni di autenticazione vengono generate con una singola chiamata di metodo e non richiedono la configurazione di framework.
  • webauthn-framework (PHP/Symfony, 347 stelle) fornisce la documentazione concettuale più estesa, rendendola la migliore per gli sviluppatori che imparano i fondamenti delle passkey da zero.
  • Quando nessuna libreria corrisponde al tuo linguaggio, go-webauthn o SimpleWebAuthn sono le alternative raccomandate grazie alla più ampia adozione in progetti commerciali e open-source.

1. Introduzione: implementazione di un server WebAuthn#

Fornire un'autenticazione utente sicura e semplice è un requisito fondamentale per le aziende digitali nel 2024. Le passkey, come nuovo standard di accesso, sono la soluzione ideale per soddisfare queste esigenze. Tuttavia, l'esperienza utente e la sicurezza migliorate delle passkey per l'utente hanno un prezzo quando si tratta di implementarle come sviluppatore. La difficoltà di implementazione deriva dal fatto che le passkey sono relativamente nuove, non solo per gli utenti, ma anche per gli sviluppatori, e la loro implementazione può essere piuttosto impegnativa rispetto all'autenticazione basata su password. Infatti, sono necessari almeno quattro endpoint API per l'autenticazione tramite passkey rispetto a un endpoint API per l'autenticazione tramite password.

Uno dei componenti principali lato server per fornire l'autenticazione tramite passkey è il server WebAuthn (la parte verde della libreria). Per una guida completa su come il server WebAuthn si inserisce nella più ampia integrazione dello stack aziendale, consulta il nostro articolo dedicato.

Fonte: Yubico

In questo post del blog confrontiamo diverse librerie / pacchetti / SDK per server WebAuthn, analizziamo le differenze e forniamo una raccomandazione per gli sviluppatori che sono nuovi all'implementazione delle passkey.

2. Come posso implementare le passkey da solo?#

Per capire meglio perché è necessaria una libreria server WebAuthn in primo luogo, diamo un'occhiata a come possono essere implementate le passkey. In linea di principio, ci sono due modi per integrare le passkey in siti web e app:

  1. Utilizzare una soluzione per passkey di terze parti (ad es. Corbado)
  2. Implementare le passkey da soli utilizzando una delle librerie server WebAuthn riportate di seguito

Mentre una soluzione per passkey di terze parti è facile da integrare e di solito fa risparmiare molto tempo di ingegneria (soprattutto per i casi limite, la manutenzione, il recupero, le soluzioni di fallback e il miglioramento della UX delle passkey), alcuni sviluppatori preferiscono implementare tutto da soli.

Demo Icon

Prova le passkey in una demo live.

Prova le passkey

Diamo un'occhiata a come funziona l'implementazione delle passkey fai-da-te. In una configurazione di base, è necessario un meccanismo per la registrazione (sign-up) e l'autenticazione (login). Entrambi i processi, chiamati anche cerimonie WebAuthn, sono gestiti in modo diverso, anche se il flusso complessivo segue uno schema simile:

  1. Il frontend (il browser) avvia una richiesta di registrazione o di accesso e chiama un endpoint API di backend.
  2. Il backend genera i parametri WebAuthn per la registrazione o l'accesso. Questi sono chiamati rispettivamente PublicKeyCredentialCreationOptions e PublicKeyCredentialRequestOptions. Una delle parti più importanti di questi parametri WebAuthn è la challenge. I parametri WebAuthn vengono quindi inviati al frontend.
  3. Il frontend riceve questi parametri WebAuthn e li utilizza per verificare l'identità dell'utente utilizzando il sistema di autenticazione del dispositivo locale (ad es. tramite Face ID, Touch ID, Windows Hello). Nei processi di registrazione, viene creata una nuova coppia di chiavi pubblica-privata, la chiave privata viene memorizzata localmente, mentre la chiave pubblica viene inviata al server. Nei processi di accesso, la challenge viene firmata utilizzando la chiave privata della passkey e inviata a un altro endpoint API di backend.
  4. Nei processi di registrazione, il backend riceve la chiave pubblica e la memorizza. Negli accessi, il backend riceve la challenge firmata e ne verifica l'integrità utilizzando il server WebAuthn.

Poiché ogni processo di registrazione / accesso comporta questi passaggi, il backend deve tenere traccia degli utenti, delle passkey e delle richieste di registrazione / accesso.

Igor Gjorgjioski Testimonial

Igor Gjorgjioski

Head of Digital Channels & Platform Enablement, VicRoads

We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.

See how VicRoads scaled passkeys to 5M+ users — alongside their existing IDP.

Read the case study

Se vuoi acquisire conoscenze più approfondite sul modo in cui funzionano le passkey e su come si presenta una semplice implementazione (senza utilizzare una soluzione per passkey di terze parti), puoi consultare il nostro articolo del blog qui.

Negli scenari reali, quando implementi le passkey da solo, tieni presente che non si tratta solo di fornire gli endpoint API necessari e l'implementazione di base per registrarsi e accedere. Oltre a ciò, è necessario affrontare i seguenti argomenti e casi d'uso:

  • Gestione dei dispositivi
  • Flussi di accesso multipiattaforma e multidispositivo
  • Gestione degli utenti
  • Gestione delle sessioni
  • Rilevamento della prontezza del dispositivo per le passkey
  • Formazione degli utenti
  • Opzioni di autenticazione di fallback
  • Meccanismi di recupero
  • Opzioni per la condivisione dell'account
  • Flussi di creazione e accesso con passkey ottimizzati per un'elevata adozione

Tuttavia, per l'implementazione di base delle passkey, è sufficiente aderire allo standard WebAuthn. L'implementazione di una libreria server WebAuthn ben nota e supportata di solito è sufficiente. La libreria genera i parametri del server WebAuthn e verifica le challenge di accesso, facendosi essenzialmente carico della parte crittografica e più complessa per te.

Slack Icon

Entra nella nostra community passkeys per aggiornamenti e supporto.

Unisciti

3. Librerie backend per server WebAuthn: un confronto#

Tutte le librerie server WebAuthn analizzate forniscono le funzionalità necessarie per offrire l'autenticazione tramite passkey. Pertanto, abbiamo prestato particolare attenzione ai seguenti criteri:

  • Criteri di selezione dell'autenticatore: come si possono impostare le preferenze per determinati comportamenti e funzionalità di sicurezza (ad es. forzare la creazione di resident key)?
  • Impostazioni globali: quanto si può centralizzare la configurazione necessaria?
  • Documentazione: quanto è ben documentata e facile da seguire la libreria server WebAuthn?
  • Esempi: ci sono esempi di implementazione che si possono prendere come riferimento?

Sono state analizzate le seguenti librerie server WebAuthn (ordinate per numero decrescente di stelle su GitHub a dicembre 2023):

StateOfPasskeys Icon

Scopri quante persone usano davvero le passkey.

Vedi dati di adozione

3.1 TypeScript: SimpleWebAuthn#

  • Linguaggio di programmazione: Typescript
  • Framework: Node.js
  • Autore: Matthew Miller (Duo Security / Cisco)
  • Stelle: 1000
  • Utilizzato da: 781
  • Contributori: 19
  • Conformità FIDO:
  • Impostazioni globali: No
  • Criteri di selezione dell'autenticatore: come suggerito dal W3C (dovrebbe contenere le variabili authenticatorAttachment, residentKey, requireResidentKey e userVerification che sono spiegate anche sulla pagina del W3C)
  • Documentazione: ben strutturata con un focus sulla configurazione rapida e sulla facilità d'uso, include conoscenze sulle passkey, ad es. spiega cosa sono le passkey e come funzionano
  • Esempi: progetto di esempio disponibile nella documentazione
  • Strutture dati raccomandate:
type UserModel = { id: string; username: string; currentChallenge?: string; }; /** * It is strongly advised that authenticators get their own DB * table, ideally with a foreign key to a specific UserModel. * * "SQL" tags below are suggestions for column data types and * how best to store data received during registration for use * in subsequent authentications. */ type Authenticator = { // SQL: Encode to base64url then store as `TEXT`. Index this column credentialID: Uint8Array; // SQL: Store raw bytes as `BYTEA`/`BLOB`/etc... credentialPublicKey: Uint8Array; // SQL: Consider `BIGINT` since some authenticators return atomic timestamps as counters counter: number; // SQL: `VARCHAR(32)` or similar, longest possible value is currently 12 characters // Ex: 'singleDevice' | 'multiDevice' credentialDeviceType: CredentialDeviceType; // SQL: `BOOL` or whatever similar type is supported credentialBackedUp: boolean; // SQL: `VARCHAR(255)` and store string array as a CSV string // Ex: ['usb' | 'ble' | 'nfc' | 'internal'] transports?: AuthenticatorTransport[]; };
  • Altre caratteristiche: ottimo debugger WebAuthn per le risposte WebAuthn e non offre solo una libreria backend / server ma anche una libreria per il frontend (in pratica racchiudendo alcune delle API di autenticazione web del client)
  • Valutazione personale: configurazione più intuitiva vista finora e molto semplice. Inoltre, è una delle poche librerie che offre anche una libreria browser per aiutare con le implementazioni client, il che la rende eccezionale. L'autore della libreria è molto attivo nella comunità WebAuthn / passkey.
  • Link GitHub: https://github.com/MasterKale/SimpleWebAuthn

3.2 .NET: fido2-net-lib#

  • Linguaggio di programmazione: C#
  • Framework: .NET
  • Autori: Anders Åberg, Alex Seigler
  • Stelle: 962
  • Utilizzato da: 200
  • Contributori: 40
  • Conformità FIDO:
  • Impostazioni globali:
  • Criteri di selezione dell'autenticatore: come suggerito dal W3C
  • Documentazione: solo il file Readme con un paio di esempi, un po' di passkey intelligence sul sito web della libreria
  • Esempi: controller demo e archivio credenziali di esempio disponibili per mostrare un'integrazione di esempio
  • Struttura dati raccomandata:
public class StoredCredential { /// <summary> /// The Credential ID of the public key credential source. /// </summary> public byte[] Id { get; set; } /// <summary> /// The credential public key of the public key credential source. /// </summary> public byte[] PublicKey { get; set; } /// <summary> /// The latest value of the signature counter in the authenticator data from any ceremony using the public key credential source. /// </summary> public uint SignCount { get; set; } /// <summary> /// The value returned from getTransports() when the public key credential source was registered. /// </summary> public AuthenticatorTransport[] Transports { get; set; } /// <summary> /// The value of the BE flag when the public key credential source was created. /// </summary> public bool IsBackupEligible { get; set; } /// <summary> /// The latest value of the BS flag in the authenticator data from any ceremony using the public key credential source. /// </summary> public bool IsBackedUp { get; set; } /// <summary> /// The value of the attestationObject attribute when the public key credential source was registered. /// Storing this enables the Relying Party to reference the credent’al's attestation statement at a later time. /// </summary> public byte[] AttestationObject { get; set; } /// <summary> /// The value of the clientDataJSON attribute when the public key credential source was registered. /// Storing this in combination with the above attestationObject item enables the Relying Party to re-verify the attestation signature at a later time. /// </summary> public byte[] AttestationClientDataJson { get; set; } public List<byte[]> DevicePublicKeys { get; set; } public byte[] UserId { get; set; } public PublicKeyCredentialDescriptor Descriptor { get; set; } public byte[] UserHandle { get; set; } public string AttestationFormat { get; set; } public DateTimeOffset RegDate { get; set; } public Guid AaGuid { get; set; } }
  • Altre caratteristiche: utilizzata da Bitwarden (la startup passwordless.dev è stata acquisita da Bitwarden)
  • Valutazione personale: libreria adatta agli sviluppatori con una buona quantità di materiale supplementare
  • Link GitHub: https://github.com/passwordless-lib/fido2-net-lib

3.3 Python: py_webauthn#

  • Linguaggio di programmazione: Python
  • Framework: nessuno in particolare
  • Autore: Duo Labs
  • Stelle: 727
  • Utilizzato da: 912
  • Contributori: 23
  • Conformità FIDO: N/D
  • Impostazioni globali: No
  • Criteri di selezione dell'autenticatore: come suggerito dal W3C
  • Documentazione: scarsa o nulla, è richiesta una precedente conoscenza delle passkey
  • Esempi: sono inclusi piccoli esempi di codice per la registrazione e l'accesso
  • Struttura dati raccomandata: N/D
  • Altre caratteristiche: richiede Python >= 3.8
  • Valutazione personale: libreria comparativamente compatta con un piccolo numero di file, se ne può avere una panoramica in breve tempo.
  • Link GitHub: https://github.com/duo-labs/py_webauthn

3.4 Ruby: webauthn-ruby#

  • Linguaggio di programmazione: Ruby
  • Framework: Ruby on Rails
  • Autore: Cedarcode
  • Stelle: 580
  • Utilizzato da: 679
  • Download della gemma: 18 Mio
  • Contributori: 27
  • Conformità FIDO:
  • Impostazioni globali:
  • Criteri di selezione dell'autenticatore: come suggerito dal W3C
  • Documentazione: il file Readme è l'unica fonte di documentazione
  • Esempi: N/D
  • Struttura dati raccomandata: N/D
  • Altre caratteristiche: sono disponibili anche dei wrapper per questa libreria (warden-webauthn, devise-passkeys)
  • Valutazione personale: poiché il materiale supplementare è piuttosto limitato, raccomanderemmo questa libreria solo se hai familiarità sia con Ruby che con le passkey
  • Link GitHub: https://github.com/cedarcode/webauthn-ruby

3.5 Go: go-webauthn#

  • Linguaggio di programmazione: Go
  • Framework: framework basati su Go come Gin, Echo, …
  • Autore: originariamente da Duo Labs / continuato da James Elliott
  • Stelle: 480
  • Utilizzato da: 280
  • Contributori: 18
  • Conformità FIDO:
  • Impostazioni globali:
  • Criteri di selezione dell'autenticatore: come suggerito dal W3C
  • Documentazione: il file Readme con alcuni esempi è l'unica fonte di documentazione
  • Esempi: repo di esempio disponibile
  • Struttura dati raccomandata: N/D
  • Altre caratteristiche: gran numero di file, farsi un'idea generale richiede un po' di tempo
  • Valutazione personale: libreria popolare e facile da usare una volta che si acquisisce familiarità, tuttavia raccomandiamo di apprendere alcune conoscenze sulle passkey (come funzionano, come sono le procedure, ecc.) in anticipo.
  • Link GitHub: https://github.com/go-webauthn/webauthn

3.6 Java: java-webauthn-server#

  • Linguaggio di programmazione: Java
  • Framework: Maven / Gradle
  • Autore: Yubico
  • Stelle: 391
  • Utilizzato da: N/D
  • Contributori: 27
  • Conformità FIDO: N/D
  • Impostazioni globali:
  • Criteri di selezione dell'autenticatore: come suggerito dal W3C.
  • Documentazione: il file Readme è l'unica documentazione, ma piuttosto dettagliata
  • Esempi: N/D
  • Struttura dati raccomandata: N/D
  • Altre caratteristiche: è dotato di un'interfaccia Credential Repository, che fornisce indicazioni chiare sui metodi di recupero necessari dal database.
  • Valutazione personale: sebbene tu debba gestire tu stesso il database, il repository delle credenziali aiuta in modo significativo nel processo di progettazione del database. Naturalmente le implementazioni Java sono dotate di un numero esteso di file in quanto ogni attributo necessita di una classe che di solito è memorizzata in un proprio file. Questo rende l'ottenimento di una panoramica un compito che richiede più tempo.
  • Link GitHub: https://github.com/Yubico/java-webauthn-server

3.7 Rust: webauthn-rs#

  • Linguaggio di programmazione: Rust
  • Framework: basato su Rust (Rocket, Axum, …)
  • Autore: Kanidm Identity Management Project
  • Stelle: 351
  • Utilizzato da: 617
  • Contributori: 25
  • Conformità FIDO: N/D
  • Impostazioni globali:
  • Criteri di selezione dell'autenticatore: possibilità di configurazione molto limitate. Le altre librerie sono implementate esattamente secondo lo standard W3C, mostrando una maggiore configurabilità
  • Documentazione: esiste una documentazione tecnica autogenerata, ma non molto dettagliata
  • Esempi: repo tutorial con esempi per 3 diversi framework web è disponibile
  • Struttura dati raccomandata: N/D
  • Altre caratteristiche: la libreria ha superato un audit di sicurezza eseguito da SUSE product security.
  • Valutazione personale: a causa della limitata configurabilità e della documentazione raccomanderemmo questa libreria solo se il tuo framework principale è basato su Rust e sai come funzionano le passkey
  • Link GitHub: https://github.com/kanidm/webauthn-rs

3.8 PHP: webauthn-framework#

  • Linguaggio di programmazione: PHP
  • Framework: Symfony
  • Autore: Florent Morselli
  • Stelle: 347
  • Utilizzato da: N/D
  • Contributori: 18
  • Conformità FIDO:
  • Impostazioni globali:
  • Criteri di selezione dell'autenticatore: come suggerito dal W3C.
  • Documentazione: documentazione estesa che include dettagli tecnici, ma spiega anche le passkey da zero
  • Esempi: repo di esempio disponibile
  • Struttura dati raccomandata:
<?php declare(strict_types=1); namespace App\Entity; use App\Repository\PublicKeyCredentialSourceRepository; use DateTimeImmutable; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Symfony\Component\Uid\AbstractUid; use Symfony\Component\Uid\Uuid; use Webauthn\PublicKeyCredentialSource as BasePublicKeyCredentialSource; use Webauthn\TrustPath\TrustPath; #[ORM\Table(name: 'pk_credential_sources')] #[ORM\Entity(repositoryClass: PublicKeyCredentialSourceRepository::class)] class PublicKeyCredentialSource extends BasePublicKeyCredentialSource { #[ORM\Column(type: Types::DATETIME_IMMUTABLE)] public readonly DateTimeImmutable $createdAt; #[ORM\Id] #[ORM\Column(type: Types::STRING, length: 255)] #[ORM\GeneratedValue(strategy: 'NONE')] private string $id; public function __construct( string $publicKeyCredentialId, string $type, array $transports, string $attestationType, TrustPath $trustPath, AbstractUid $aaguid, string $credentialPublicKey, string $userHandle, int $counter ) { $this->id = Uuid::v4()->toRfc4122(); $this->createdAt = new DateTimeImmutable(); parent::__construct($publicKeyCredentialId, $type, $transports, $attestationType, $trustPath, $aaguid, $credentialPublicKey, $userHandle, $counter); } public function getId(): string { return $this->id; } }

3.9 Java: webauthn4j#

  • Linguaggio di programmazione: Java
  • Framework: Maven
  • Autore: WebAuthn4j
  • Stelle: 342
  • Utilizzato da: N/D
  • Contributori: 19
  • Conformità FIDO:
  • Impostazioni globali:
  • Criteri di selezione dell'autenticatore: invece del parametro UserVerificationRequirement suggerito dal W3C con i valori discouraged, preferred, required, webauthn4j offre verificationRequired e userPrecenseRequired come variabili booleane
  • Documentazione: documentazione asciutta, ma estesa, con alcuni esempi di codice disponibili
  • Esempi: repo di esempio disponibile
  • Struttura dati raccomandata: N/D
  • Altre caratteristiche: N/D
  • Valutazione personale: leggere la documentazione diventa noioso e complesso rapidamente, in quanto si tratta di un'unica grande pagina che si concentra esclusivamente sulla funzionalità, non sul concetto alla base delle passkey.
  • Link GitHub: https://github.com/webauthn4j/webauthn4j

La seguente tabella fornisce una panoramica delle librerie server WebAuthn:

Substack Icon

Iscriviti al nostro Substack sulle passkey per le ultime novità.

Iscriviti

4. Raccomandazioni: orientarsi nel panorama delle librerie WebAuthn#

4.1 Passaggio 1: scegli la tua libreria WebAuthn#

Poiché la maggior parte delle librerie è ugualmente potente e implementa lo standard WebAuthn, raccomandiamo il seguente albero decisionale:

  • È disponibile una libreria server WebAuthn nel tuo framework e linguaggio di programmazione: non abbiamo elencato librerie per framework che dipendono da una delle librerie sopra indicate (ad es. sono disponibili personalizzazioni per PHP per Symfony e Laravel). Nel caso esista un'implementazione per framework, sceglila in quanto ti consente di implementare le chiamate API WebAuthn in modo nativo nella struttura del tuo framework attuale e di utilizzare la tua astrazione del database per implementare l'archiviazione.
  • È disponibile una libreria server WebAuthn nel tuo linguaggio di programmazione: poiché hai bisogno di endpoint API di backend, scegli la libreria server WebAuthn nel tuo linguaggio di programmazione nativo in modo che possa essere incorporata in modo nativo nei tuoi attuali endpoint API.
  • Non è disponibile alcuna libreria server WebAuthn nel tuo linguaggio di programmazione: in questo caso, dovresti prendere in considerazione l'utilizzo di una soluzione gestita per le passkey come Corbado. Se questa non è un'opzione, ti consigliamo di utilizzare go-webauthn o SimpleWebAuthn poiché hanno la maggiore adozione, sono leggere e sono utilizzate anche da molti progetti commerciali e open-source.

Se vuoi solo saperne di più sui server WebAuthn in generale senza avere già un progetto specifico, possiamo farti alcune raccomandazioni poiché ci sono alcune differenze tra le librerie e il loro materiale supplementare come documentazione ed esempi di implementazione. Quindi, per gli sviluppatori software desiderosi di avviare il loro percorso di implementazione delle passkey, consigliamo di scegliere le seguenti implementazioni:

  • Per test rapidi: il pacchetto py_webauthn offre un'implementazione istantanea con snippet di codice pronti all'uso. Con una sola chiamata al metodo puoi generare le opzioni necessarie per l'autenticazione. Poiché non è necessario incorporare la libreria in un framework e configurarla, è l'ideale per i test rapidi.
  • Per un'implementazione intuitiva: il pacchetto SimpleWebauthn scritto in Typescript è semplice e adatto agli sviluppatori. Come py_webauthn l'implementazione è molto minimalista, ma in aggiunta è dotata di documentazione che ti guida attraverso il processo di autenticazione. A differenza di py_webauthn tuttavia, SimpleWebAuthn non è dotato di un chiaro esempio che viene eseguito senza modifiche.
  • Per una comprensione profonda: la libreria webauthn-framework per PHP si distingue con una documentazione estesa e strutturata incentrata sui concetti delle passkey. Le differenze principali con le altre librerie con una buona quantità di documentazione come webauthn4j sono il design e la vivacità della documentazione.

Per una comprensione ancora più approfondita di come funziona WebAuthn lato server, puoi leggere la sezione molto dettagliata sulle operazioni della Relying Party di WebAuthn nella RFC di WebAuthn, che descrive in dettaglio ogni fase da implementare per la registrazione di una nuova credenziale (7.1) e la verifica di un'asserzione di autenticazione (7.2).

4.2 Passaggio 2: definisci le opzioni del tuo server WebAuthn#

Valuta i tuoi requisiti specifici per le passkey e WebAuthn. In questo post del blog, abbiamo ipotizzato che tu voglia supportare solo le passkey come discoverable credentials. Leggi informazioni sulle PublicKeyCredentialCreationOptions e sulle PublicKeyCredentialRequestOptions insieme alle chiamate API WebAuthn lato client navigator.credentials.create() e navigator.credentials.get() per impostare correttamente i parametri nella configurazione dell'SDK del server WebAuthn per il tuo caso d'uso.

4.3 Passaggio 3: definisci la struttura del database#

Per tutte le librerie server WebAuthn, dovrai fornire la struttura del database appropriata per persistere / accedere alle seguenti informazioni:

  • Credenziali
  • Utenti
  • Challenge
  • Autenticatori

Per alcune librerie, ci sono raccomandazioni ed esempi specifici (se li abbiamo trovati utili, li abbiamo forniti sopra). È essenziale capire appieno quali campi WebAuthn devono essere memorizzati dove. Presta particolare attenzione per identificare quale valore desideri utilizzare per l'ID utente (user.id). Abbiamo una spiegazione più dettagliata qui. Tieni anche in considerazione cosa succede quando un utente potrebbe eliminare una passkey. Oltre a ciò, puoi facoltativamente limitare l'uso di determinati autenticatori. Un elenco di autenticatori validi correlati alle passkey può essere trovato qui. Nel caso in cui tu voglia anche supportare e controllare le attestazioni delle chiavi di sicurezza, questa è un'altra storia. Puoi trovare maggiori informazioni qui.

4.4 Passaggio 4: esegui i test sui dispositivi dei tuoi utenti#

Identifica su quali dispositivi i tuoi utenti utilizzeranno le passkey e i metodi di autenticazione di fallback. Nel caso in cui tu non sia sicuro di quali dispositivi, browser e sistemi operativi utilizzino i tuoi utenti, dai un'occhiata allo State of Passkeys per i dati più recenti sulla prontezza per le passkey su piattaforme, browser e sistemi operativi. Se hai domande specifiche sull'adozione delle passkey e sulla quota di prontezza per le passkey di determinati dispositivi, non esitare a contattarci. Saremo lieti di fornirti ulteriori approfondimenti e aiutarti su questo argomento (vedi anche il nostro ultimo post sul blog riguardante la prontezza per le passkey). Dal punto di vista dell'osservabilità, mantieni i fallimenti WebAuthn lato client e i rifiuti di verifica del server come flussi separati; per le definizioni dei bucket lato client, utilizza gli errori WebAuthn. Inoltre, dovresti tenere presente che per Windows 10 e Linux dovrai trovare soluzioni dedicate poiché questi sistemi operativi forniscono il minor supporto per le passkey (se del caso).

StateOfPasskeys Icon

Scopri quante persone usano davvero le passkey.

Vedi dati di adozione

5. Conclusione#

Per quasi ogni linguaggio o framework là fuori esiste ormai una libreria server WebAuthn ben consolidata. Il confronto tra le librerie di diversi linguaggi non mostra alcuna chiara superiorità di determinate implementazioni. Piuttosto, dovresti utilizzare il framework / linguaggio di programmazione con cui hai più familiarità. In alternativa, se non vuoi implementare WebAuthn tu stesso e prenderti cura di tutto ciò che ne consegue, puoi provare una soluzione dedicata e pre-costruita per l'autenticazione tramite passkey come Corbado. Ponendosi come una soluzione di autenticazione all-in-one incentrata sulle passkey, è dotata di un'eccellente passkey intelligence, gestione delle sessioni e metodi di autenticazione di fallback, in modo che tu possa concentrarti sullo sviluppo del tuo prodotto e dimenticarti dell'autenticazione. Puoi provarla gratuitamente con un numero illimitato di utenti qui.

Corbado

Chi siamo

Corbado è la Authentication Intelligence Platform per i team CIAM che gestiscono l'autenticazione consumer su larga scala. Ti aiutiamo a vedere ciò che i log IDP e gli strumenti di analytics generici non mostrano: quali dispositivi, versioni di OS, browser e gestori di credenziali supportano i passkey, perché gli enrollment non si trasformano in login, dove il flusso WebAuthn fallisce e quando un aggiornamento di OS o browser interrompe silenziosamente il login — tutto senza sostituire Okta, Auth0, Ping, Cognito o il tuo IDP interno. Due prodotti: Corbado Observe aggiunge osservabilità per i passkey e qualsiasi altro metodo di login. Corbado Connect introduce passkey gestiti con analytics integrato (insieme al tuo IDP). VicRoads gestisce i passkey per oltre 5M di utenti con Corbado (+80 % di attivazione passkey). Parla con un esperto di Passkey

Domande frequenti#

Come scelgo la libreria server WebAuthn giusta per il mio progetto?#

Per prima cosa controlla se esiste una libreria per il tuo framework specifico, poi per il tuo linguaggio di programmazione. Poiché tutte le librerie elencate implementano lo standard WebAuthn allo stesso modo, la scelta dovrebbe privilegiare la familiarità con il tuo stack esistente piuttosto che le differenze di funzionalità tra le librerie.

Quali dati devo memorizzare nel mio database quando creo un server WebAuthn?#

Come minimo devi conservare credenziali, utenti, challenge e autenticatori. Presta molta attenzione a quale valore assegni come ID utente (userHandle) e pianifica gli scenari in cui gli utenti potrebbero eliminare una passkey dal proprio dispositivo.

Perché non posso semplicemente implementare la verifica lato server WebAuthn da zero senza una libreria?#

Le librerie server WebAuthn gestiscono le operazioni crittografiche più complesse: generare i parametri PublicKeyCredentialCreationOptions e PublicKeyCredentialRequestOptions e verificare le challenge firmate. Fare questo in modo corretto da zero è significativamente più difficile rispetto all'uso di una libreria conforme a FIDO che è già stata testata e sottoposta ad audit.

Quali sistemi operativi hanno il peggior supporto per le passkey e necessitano di una gestione aggiuntiva in un'implementazione WebAuthn?#

Windows 10 e Linux offrono il minor supporto per le passkey, quindi sono necessarie soluzioni di fallback dedicate per gli utenti su queste piattaforme. Monitorare i fallimenti WebAuthn lato client e i rifiuti di verifica del server come flussi separati aiuta a identificare i problemi specifici del sistema operativo in produzione.

Scopri come Corbado si integra con la tua distribuzione di passkey e con lo stack di autenticazione esistente.

Esplora la Console

Condividi questo articolo


LinkedInTwitterFacebook