TOTP per Delphi: autenticazione a due fattori

Aggiungi un secondo fattore a qualsiasi login con i codici a sei cifre di Google Authenticator, Microsoft Authenticator o Authy. Crea il secret, mostralo come codice QR e verifica i codici sul tuo server.

TsgcTOTPAuthenticator

Un componente non visuale che implementa le password monouso basate sul tempo (RFC 6238) e sul contatore (RFC 4226). Non apre mai una connessione, quindi funziona allo stesso modo in un form di login, in una REST API o in un server WebSocket.

Classe del componente

TsgcTOTPAuthenticator (unit sgcAuth_TOTP)

Piattaforme

Windows, macOS, Linux, iOS, Android

Edizione

Enterprise

Iscrivi l'utente, poi verifica i codici

Chiama GenerateSecret una volta per utente, mostra GetProvisioningURI come codice QR, memorizza il secret e verifica ogni codice digitato all'accesso con VerifyCode.

uses
  sgcAuth_TOTP;

var
  TOTP: TsgcTOTPAuthenticator;
  vSecret, vURI: string;
begin
  TOTP := TsgcTOTPAuthenticator.Create(nil);
  TOTP.Issuer := 'Example App';

  // iscrizione: un nuovo secret Base32 e l'URI otpauth:// per il codice QR
  vSecret := TOTP.GenerateSecret;
  vURI := TOTP.GetProvisioningURI('alice@example.com', vSecret);
  // salva vSecret nel record utente, genera vURI come codice QR

  // accesso: verifica il codice digitato dall'utente
  if TOTP.VerifyCode(vSecret, edtCode.Text) then
    ShowMessage('Code accepted');

  // codici di recupero monouso per un telefono smarrito
  TOTP.GenerateRecoveryCodes(memoRecovery.Lines, 10);
end;
// uses: sgcAuth_TOTP
TsgcTOTPAuthenticator *TOTP = new TsgcTOTPAuthenticator(this);
TOTP->Issuer = "Example App";

String Secret = TOTP->GenerateSecret();
String URI = TOTP->GetProvisioningURI("alice@example.com", Secret);

if (TOTP->VerifyCode(Secret, edtCode->Text))
  ShowMessage("Code accepted");

TOTP->GenerateRecoveryCodes(memoRecovery->Lines, 10);

Cosa contiene

Tutto ciò che serve a un secondo fattore, dal primo codice QR al recupero di un dispositivo smarrito. La memorizzazione dei secret resta nelle tue mani.

Secret e provisioning QR

GenerateSecret restituisce un secret Base32 casuale di SecretLength byte (20 di default). GetProvisioningURI costruisce l'URI otpauth://totp/ con Issuer, Algorithm, Digits e Period, pronto per essere reso come codice QR.

Tolleranza allo sfasamento dell'orologio

VerifyCode accetta lo step temporale corrente e Window step prima o dopo di esso (1 di default), così un telefono con l'orologio sfasato di pochi secondi riesce comunque ad accedere.

Protezione dai replay

L'overload di VerifyCode con aLastTimeStep accetta solo uno step temporale superiore all'ultimo utilizzato e restituisce lo step corrispondente, così un codice non può mai essere usato due volte.

Contatori HOTP

GenerateHOTP e VerifyHOTP implementano la variante basata sul contatore per i token hardware, con una finestra di look-ahead che risincronizza il contatore in caso di successo.

Codici di recupero

GenerateRecoveryCodes riempie qualsiasi TStrings con codici monouso univoci, il fallback per quando l'utente perde il dispositivo con l'app authenticator.

Algoritmi e cifre

HMAC-SHA1 (il default supportato da tutte le app), HMAC-SHA256 o HMAC-SHA512 tramite Algorithm, codici da 6 a 8 Digits e qualsiasi Period.

Specifiche e riferimenti

Fonti autorevoli per gli standard implementati da questo componente.

Documentazione e demo

Vai al riferimento del componente, scarica il progetto demo pronto all'uso e prova la versione trial.

Guida online: TsgcTOTPAuthenticator Riferimento completo di proprietà e metodi per questo componente.
Progetto demo: Demos\26.Authentication\02.TOTP Iscrizione con codice QR, codici in tempo reale, verifica con protezione dai replay e codici di recupero. Incluso nel pacchetto sgcWebSockets, scarica la versione di prova qui sotto.
Documento tecnico (PDF) Funzionalità, guida rapida, esempi di codice per Delphi e C++ Builder e riferimenti alle fonti primarie, solo per questo componente.
Manuale utente (PDF) Manuale completo che copre tutti i componenti della libreria.
Blog: Login Delphi con Passkey, SAML SSO, LDAP e TOTP 2FA Come i sei componenti di autenticazione si integrano in un'unica applicazione Delphi.
La scelta più conveniente: All-AccessTutti i prodotti eSeGeCe, con Supporto Premium incluso, a partire da €1,059/anno.
Vedi i prezzi All-Access

Pronto ad aggiungere l'autenticazione a due fattori?

Scarica la versione di prova gratuita e proteggi i login Delphi con i codici dell'app authenticator.