Delphi TOTP Zwei-Faktor-Authentifizierung

Fügen Sie jedem Login einen zweiten Faktor mit den sechsstelligen Codes von Google Authenticator, Microsoft Authenticator oder Authy hinzu. Erstellen Sie das Geheimnis, zeigen Sie es als QR-Code an und verifizieren Sie die Codes auf Ihrem Server.

TsgcTOTPAuthenticator

Eine nicht-visuelle Komponente, die zeitbasierte (RFC 6238) und zählerbasierte (RFC 4226) Einmalkennwörter implementiert. Sie öffnet nie selbst eine Verbindung und funktioniert daher gleichermaßen in einem Login-Formular, einer REST-API oder einem WebSocket-Server.

Komponentenklasse

TsgcTOTPAuthenticator (Unit sgcAuth_TOTP)

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Enterprise

Benutzer registrieren, dann Codes verifizieren

Rufen Sie GenerateSecret einmal pro Benutzer auf, zeigen Sie GetProvisioningURI als QR-Code an, speichern Sie das Geheimnis und prüfen Sie jeden bei der Anmeldung eingegebenen Code mit VerifyCode.

uses
  sgcAuth_TOTP;

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

  // enrolment: a new Base32 secret and the otpauth:// URI for the QR code
  vSecret := TOTP.GenerateSecret;
  vURI := TOTP.GetProvisioningURI('alice@example.com', vSecret);
  // save vSecret with the user record, render vURI as a QR code

  // sign in: check the code typed by the user
  if TOTP.VerifyCode(vSecret, edtCode.Text) then
    ShowMessage('Code accepted');

  // one-time recovery codes for a lost phone
  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);

Was steckt drin

Alles, was ein zweiter Faktor braucht, vom ersten QR-Code bis zur Wiederherstellung nach einem verlorenen Gerät. Die Speicherung der Geheimnisse bleibt in Ihrer Hand.

Geheimnisse und QR-Bereitstellung

GenerateSecret liefert ein zufälliges Base32-Geheimnis mit SecretLength Bytes (standardmäßig 20). GetProvisioningURI erstellt die otpauth://totp/-URI mit Issuer, Algorithm, Digits und Period, bereit zur Darstellung als QR-Code.

Toleranz gegenüber Zeitabweichungen

VerifyCode akzeptiert den aktuellen Zeitschritt sowie Window Schritte davor oder danach (standardmäßig 1), sodass sich ein Telefon mit leicht abweichender Uhr weiterhin anmelden kann.

Replay-Schutz

Die Überladung von VerifyCode mit aLastTimeStep akzeptiert nur einen Zeitschritt, der größer ist als der zuletzt verwendete, und gibt den passenden Schritt zurück, sodass ein Code niemals zweimal verwendet werden kann.

HOTP-Zähler

GenerateHOTP und VerifyHOTP implementieren die zählerbasierte Variante für Hardware-Token, mit einem Vorlauffenster, das den Zähler bei Erfolg neu synchronisiert.

Wiederherstellungscodes

GenerateRecoveryCodes füllt eine beliebige TStrings mit eindeutigen Einmalcodes, dem Ausweg, wenn der Benutzer das Gerät mit der Authenticator-App verliert.

Algorithmen und Ziffern

HMAC-SHA1 (der Standard, den jede App unterstützt), HMAC-SHA256 oder HMAC-SHA512 über Algorithm, Codes mit 6 bis 8 Digits und beliebigem Period.

Spezifikationen und Referenzen

Maßgebliche Quellen für die Standards, die diese Komponente implementiert.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, lade das einsatzbereite Demo-Projekt herunter und teste die Testversion.

Online-Hilfe — TsgcTOTPAuthenticator Vollständige Eigenschaften- und Methodenreferenz für diese Komponente.
Demo-Projekt — Demos\26.Authentication\02.TOTP Registrierung mit QR-Code, Live-Codes, Verifizierung mit Replay-Schutz und Wiederherstellungscodes. Im sgcWebSockets-Paket enthalten — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Codebeispiele für Delphi & C++ Builder und Primärquellenreferenzen — nur für diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch zu jeder Komponente der Bibliothek.
Blog: Delphi-Login mit Passkeys, SAML SSO, LDAP und TOTP 2FA Wie die sechs Authentifizierungskomponenten in einer Delphi-Anwendung zusammenspielen.
Bestes Preis-Leistungs-Verhältnis: All-AccessAlle eSeGeCe-Produkte, inklusive Premium-Support, ab €1,059 pro Jahr.
All-Access-Preise ansehen

Bereit für Zwei-Faktor-Authentifizierung?

Laden Sie die kostenlose Testversion herunter und schützen Sie Ihre Delphi-Logins mit Authenticator-App-Codes.