Autenticación TOTP para Delphi

Añade un segundo factor a cualquier inicio de sesión con los códigos de seis dígitos de Google Authenticator, Microsoft Authenticator o Authy. Crea el secreto, muéstralo como código QR y verifica los códigos en tu servidor.

TsgcTOTPAuthenticator

Componente no visual que implementa contraseñas de un solo uso basadas en tiempo (RFC 6238) y en contador (RFC 4226). Nunca abre una conexión, por lo que funciona igual en un formulario de inicio de sesión, una API REST o un servidor WebSocket.

Clase del componente

TsgcTOTPAuthenticator (unidad sgcAuth_TOTP)

Plataformas

Windows, macOS, Linux, iOS, Android

Edición

Enterprise

Registra al usuario y luego verifica los códigos

Llama a GenerateSecret una vez por usuario, muestra GetProvisioningURI como código QR, guarda el secreto y comprueba cada código introducido al iniciar sesión con 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);

Qué incluye

Todo lo que necesita un segundo factor, desde el primer código QR hasta la recuperación de un dispositivo perdido. El almacenamiento de los secretos queda en tus manos.

Secretos y aprovisionamiento QR

GenerateSecret devuelve un secreto Base32 aleatorio de SecretLength bytes (20 por defecto). GetProvisioningURI construye la URI otpauth://totp/ con Issuer, Algorithm, Digits y Period, lista para representarse como código QR.

Tolerancia a la deriva del reloj

VerifyCode acepta el paso de tiempo actual y Window pasos antes o después (1 por defecto), de modo que un teléfono con el reloj desajustado unos segundos sigue pudiendo iniciar sesión.

Protección contra reproducción

La sobrecarga de VerifyCode con aLastTimeStep solo acepta un paso de tiempo mayor que el último utilizado y devuelve el paso coincidente, de forma que un código nunca puede usarse dos veces.

Contadores HOTP

GenerateHOTP y VerifyHOTP implementan la variante basada en contador para tokens hardware, con una ventana de anticipación que resincroniza el contador tras un acierto.

Códigos de recuperación

GenerateRecoveryCodes rellena cualquier TStrings con códigos únicos de un solo uso, la alternativa cuando el usuario pierde el dispositivo con la app autenticadora.

Algoritmos y dígitos

HMAC-SHA1 (el valor por defecto que soportan todas las apps), HMAC-SHA256 o HMAC-SHA512 mediante Algorithm, códigos de 6 a 8 Digits y cualquier Period.

Especificaciones y referencias

Fuentes autorizadas de los estándares que implementa este componente.

Documentación y Demos

Enlace directo a la referencia del componente, descarga el proyecto demo listo para ejecutar y la prueba gratuita.

Online Help — TsgcTOTPAuthenticator Referencia completa de propiedades, métodos y eventos de este componente.
Demo Project — Demos\26.Authentication\02.TOTP Proyecto de ejemplo listo para ejecutar. Se incluye en el paquete sgcWebSockets, descarga la prueba gratuita más abajo.
Documento técnico (PDF) Características, inicio rápido, ejemplos de código para Delphi y C++ Builder y referencias de fuentes primarias, solo este componente.
Manual de usuario (PDF) Manual completo que cubre todos los componentes de la biblioteca.
Blog: Inicio de sesión en Delphi con Passkeys, SAML SSO, LDAP y TOTP 2FA Cómo encajan los seis componentes de autenticación en una misma aplicación Delphi.
La mejor opción: All-AccessTodos los productos de eSeGeCe, con Premium Support incluido, desde €1,059 al año.
Ver precios de All-Access

¿Listo para añadir autenticación de dos factores?

Descarga la prueba gratuita y protege los inicios de sesión de tus aplicaciones Delphi con códigos de app autenticadora.