Delphi TOTP-tweefactorauthenticatie

Voeg een tweede factor toe aan elke login met de zescijferige codes van Google Authenticator, Microsoft Authenticator of Authy. Maak het secret aan, toon het als QR-code en verifieer de codes op je server.

TsgcTOTPAuthenticator

Een non-visueel component dat tijdgebaseerde (RFC 6238) en tellergebaseerde (RFC 4226) eenmalige wachtwoorden implementeert. Het opent nooit zelf een verbinding, dus het werkt net zo goed in een loginformulier, een REST API of een WebSocket-server.

Component-class

TsgcTOTPAuthenticator (unit sgcAuth_TOTP)

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Enterprise en All-Access, plus het sgcAuth-pakket. Ook beschikbaar in sgcWebSockets .NET.

Registreer de gebruiker en verifieer de codes

Roep GenerateSecret één keer per gebruiker aan, toon GetProvisioningURI als QR-code, bewaar het secret en controleer elke code die bij het aanmelden wordt ingevoerd met VerifyCode.

uses
  sgcAuth_TOTP;

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

  // registratie: een nieuw Base32-secret en de otpauth://-URI voor de QR-code
  vSecret := TOTP.GenerateSecret;
  vURI := TOTP.GetProvisioningURI('alice@example.com', vSecret);
  // bewaar vSecret bij het gebruikersrecord, render vURI als QR-code

  // aanmelden: controleer de code die de gebruiker invoert
  if TOTP.VerifyCode(vSecret, edtCode.Text) then
    ShowMessage('Code accepted');

  // eenmalige herstelcodes voor een verloren telefoon
  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);

Wat zit erin

Alles wat een tweede factor nodig heeft, van de eerste QR-code tot het herstel van een verloren toestel. Het opslaan van de secrets blijft in jouw handen.

Secrets en QR-provisioning

GenerateSecret geeft een willekeurig Base32-secret van SecretLength bytes terug (standaard 20). GetProvisioningURI bouwt de otpauth://totp/-URI op met Issuer, Algorithm, Digits en Period, klaar om als QR-code te renderen.

Tolerantie voor klokverschil

VerifyCode accepteert de huidige tijdstap en Window stappen ervoor of erna (standaard 1), zodat een telefoon waarvan de klok een paar seconden afwijkt nog steeds kan aanmelden.

Replaybescherming

De overload van VerifyCode met aLastTimeStep accepteert alleen een tijdstap die groter is dan de laatst gebruikte en geeft de gevonden stap terug, zodat een code nooit twee keer kan worden gebruikt.

HOTP-tellers

GenerateHOTP en VerifyHOTP implementeren de tellergebaseerde variant voor hardwaretokens, met een look-ahead-venster dat de teller bij succes opnieuw synchroniseert.

Herstelcodes

GenerateRecoveryCodes vult elke TStrings met unieke eenmalige codes, de fallback voor wanneer de gebruiker het toestel met de authenticator-app kwijtraakt.

Algoritmes en cijfers

HMAC-SHA1 (de standaard die elke app ondersteunt), HMAC-SHA256 of HMAC-SHA512 via Algorithm, codes van 6 tot 8 Digits en elke gewenste Period.

Specificaties en referenties

Gezaghebbende bronnen voor de standaarden die dit component implementeert.

Documentatie en demo's

Diepe link naar de componentreferentie, pak het kant-en-klare demoproject en download de proefversie.

Online help — TsgcTOTPAuthenticator Volledige property- en methodereferentie voor dit component.
Demoproject — Demos\26.Authentication\02.TOTP Registratie met een QR-code, live codes, verificatie met replaybescherming en herstelcodes. Zit in het sgcWebSockets-pakket — download hieronder de proefversie.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi en C++ Builder en primaire bronreferenties — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding die elk component in de bibliotheek behandelt.
Blog — Delphi-login met passkeys, SAML-SSO, LDAP en TOTP 2FA Hoe de zes authenticatiecomponenten samenwerken in één Delphi-toepassing.
De beste deal: All-AccessElk eSeGeCe-product, inclusief Premium-ondersteuning, vanaf €1,059 per jaar.
Bekijk de All-Access-prijzen

Klaar om tweefactorauthenticatie toe te voegen?

Download de gratis proefversie en beveilig je Delphi-logins met codes uit een authenticator-app.