TOTP w Delphi: uwierzytelnianie dwuskładnikowe
Dodaj drugi składnik logowania z sześciocyfrowymi kodami Google Authenticator, Microsoft Authenticator lub Authy. Wygeneruj sekret, pokaż go jako kod QR i weryfikuj kody na swoim serwerze.
Dodaj drugi składnik logowania z sześciocyfrowymi kodami Google Authenticator, Microsoft Authenticator lub Authy. Wygeneruj sekret, pokaż go jako kod QR i weryfikuj kody na swoim serwerze.
Komponent niewizualny implementujący hasła jednorazowe oparte na czasie (RFC 6238) i na liczniku (RFC 4226). Nigdy nie otwiera połączenia, więc działa jednakowo w formularzu logowania, w API REST i w serwerze WebSocket.
TsgcTOTPAuthenticator (jednostka sgcAuth_TOTP)
Windows, macOS, Linux, iOS, Android
Enterprise i All-Access, a także pakiet sgcAuth. Dostępny również w sgcWebSockets .NET.
Wywołaj GenerateSecret raz na użytkownika, pokaż GetProvisioningURI jako kod QR, zapisz sekret i sprawdzaj każdy kod wpisany przy logowaniu za pomocą VerifyCode.
uses
sgcAuth_TOTP;
var
TOTP: TsgcTOTPAuthenticator;
vSecret, vURI: string;
begin
TOTP := TsgcTOTPAuthenticator.Create(nil);
TOTP.Issuer := 'Example App';
// rejestracja: nowy sekret Base32 i URI otpauth:// dla kodu QR
vSecret := TOTP.GenerateSecret;
vURI := TOTP.GetProvisioningURI('alice@example.com', vSecret);
// zapisz vSecret przy rekordzie użytkownika, wyrenderuj vURI jako kod QR
// logowanie: sprawdź kod wpisany przez użytkownika
if TOTP.VerifyCode(vSecret, edtCode.Text) then
ShowMessage('Code accepted');
// jednorazowe kody odzyskiwania na wypadek utraty telefonu
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);
Wszystko, czego potrzebuje drugi składnik logowania, od pierwszego kodu QR po odzyskanie dostępu po utracie urządzenia. Przechowywanie sekretów pozostaje w Twoich rękach.
GenerateSecret zwraca losowy sekret Base32 o długości SecretLength bajtów (domyślnie 20). GetProvisioningURI buduje URI otpauth://totp/ z Issuer, Algorithm, Digits i Period, gotowe do wyrenderowania jako kod QR.
VerifyCode akceptuje bieżący krok czasowy oraz Window kroków przed nim i po nim (domyślnie 1), więc telefon z zegarem przesuniętym o kilka sekund nadal loguje użytkownika.
Przeciążenie VerifyCode z aLastTimeStep akceptuje tylko krok czasowy późniejszy niż ostatnio użyty i zwraca dopasowany krok, więc kod nigdy nie może zostać użyty dwukrotnie.
GenerateHOTP i VerifyHOTP implementują wariant oparty na liczniku dla tokenów sprzętowych, z oknem wyprzedzenia, które resynchronizuje licznik po udanej weryfikacji.
GenerateRecoveryCodes wypełnia dowolny TStrings unikalnymi jednorazowymi kodami, będącymi rozwiązaniem awaryjnym, gdy użytkownik traci urządzenie z aplikacją authenticator.
HMAC-SHA1 (domyślny, obsługiwany przez każdą aplikację), HMAC-SHA256 lub HMAC-SHA512 przez Algorithm, kody od 6 do 8 Digits i dowolny Period.
Autorytatywne źródła dla standardów implementowanych przez ten komponent.
Przejdź do dokumentacji komponentu, pobierz gotowy projekt demo i wersję próbną.
| Pomoc online — TsgcTOTPAuthenticator Pełna dokumentacja właściwości i metod tego komponentu. | Open | |
| Projekt demo — Demos\26.Authentication\02.TOTP Rejestracja z kodem QR, kody na żywo, weryfikacja z ochroną przed powtórzeniem i kody odzyskiwania. Dołączony do pakietu sgcWebSockets — pobierz wersję próbną poniżej. | Open | |
| Dokument techniczny (PDF) Funkcje, szybki start, przykłady kodu dla Delphi i C++ Builder oraz odwołania do źródeł — tylko dla tego komponentu. | Open | |
| Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent biblioteki. | Open | |
| Blog: Logowanie w Delphi z Passkeys, SAML SSO, LDAP i TOTP 2FA Jak sześć komponentów uwierzytelniania współpracuje w jednej aplikacji Delphi. | Open |