Delphi TOTP 2단계 인증
Google Authenticator, Microsoft Authenticator, Authy의 6자리 코드로 모든 로그인에 2차 인증을 추가하세요. 비밀 키를 생성하고 QR 코드로 보여준 다음 서버에서 코드를 검증하세요.
Google Authenticator, Microsoft Authenticator, Authy의 6자리 코드로 모든 로그인에 2차 인증을 추가하세요. 비밀 키를 생성하고 QR 코드로 보여준 다음 서버에서 코드를 검증하세요.
시간 기반(RFC 6238)과 카운터 기반(RFC 4226) 일회용 비밀번호를 구현하는 비시각 컴포넌트예요. 연결을 직접 열지 않으므로 로그인 폼, REST API, WebSocket 서버 어디에나 똑같이 사용할 수 있어요.
TsgcTOTPAuthenticator (유닛 sgcAuth_TOTP)
Windows, macOS, Linux, iOS, Android
Enterprise와 All-Access, 그리고 sgcAuth 팩이에요. sgcWebSockets .NET에서도 제공해요.
사용자마다 GenerateSecret을 한 번 호출하고, GetProvisioningURI를 QR 코드로 보여준 다음 비밀 키를 저장하고, 로그인 시 입력한 모든 코드를 VerifyCode로 확인하세요.
uses
sgcAuth_TOTP;
var
TOTP: TsgcTOTPAuthenticator;
vSecret, vURI: string;
begin
TOTP := TsgcTOTPAuthenticator.Create(nil);
TOTP.Issuer := 'Example App';
// 등록: 새 Base32 비밀 키와 QR 코드용 otpauth:// URI
vSecret := TOTP.GenerateSecret;
vURI := TOTP.GetProvisioningURI('alice@example.com', vSecret);
// vSecret을 사용자 레코드와 함께 저장하고, vURI를 QR 코드로 렌더링해요
// 로그인: 사용자가 입력한 코드를 확인해요
if TOTP.VerifyCode(vSecret, edtCode.Text) then
ShowMessage('Code accepted');
// 휴대폰을 분실했을 때를 위한 일회용 복구 코드
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);
첫 QR 코드부터 기기 분실 후 복구까지, 2차 인증에 필요한 모든 것을 갖췄어요. 비밀 키 저장 방식은 직접 결정할 수 있어요.
GenerateSecret은 기본 20바이트인 SecretLength 길이의 무작위 Base32 비밀 키를 반환해요. GetProvisioningURI는 Issuer, Algorithm, Digits, Period를 담은 otpauth://totp/ URI를 만들어 바로 QR 코드로 렌더링할 수 있어요.
VerifyCode는 현재 시간 구간과 그 앞뒤로 기본값 1인 Window 구간의 코드를 허용하므로, 휴대폰 시계가 몇 초 어긋나도 로그인할 수 있어요.
aLastTimeStep을 사용하는 VerifyCode 오버로드는 마지막으로 사용한 시간 구간보다 큰 값만 받아들이고 일치한 구간을 반환하므로, 같은 코드를 두 번 사용할 수 없어요.
GenerateHOTP와 VerifyHOTP는 하드웨어 토큰을 위한 카운터 기반 방식을 구현하며, 성공 시 카운터를 재동기화하는 선행 검색 창을 제공해요.
GenerateRecoveryCodes는 임의의 TStrings에 고유한 일회용 코드를 채우며, 사용자가 인증 앱이 설치된 기기를 분실했을 때의 대체 수단이에요.
Algorithm으로 모든 앱이 지원하는 기본값 HMAC-SHA1, HMAC-SHA256, HMAC-SHA512를 선택할 수 있고, 코드는 Digits로 6~8자리, Period도 자유롭게 설정할 수 있어요.
이 컴포넌트가 구현하는 표준의 공식 출처예요.
컴포넌트 레퍼런스 링크, 즉시 실행 가능한 데모 프로젝트, 체험판 다운로드를 제공해요.
| 온라인 도움말 — TsgcTOTPAuthenticator 이 컴포넌트의 전체 속성, 메서드, 이벤트 레퍼런스예요. | Open | |
| Demo Project — Demos\26.Authentication\02.TOTP QR 코드 등록, 실시간 코드, 재전송 방지 검증, 복구 코드예요. sgcWebSockets 패키지에 포함돼 있어요, 아래에서 체험판을 다운로드하세요. | Open | |
| 기술 문서 (PDF) 이 컴포넌트만을 위한 기능, 빠른 시작, Delphi 및 C++ Builder 코드 샘플, 1차 출처 참조예요. | Open | |
| 사용자 설명서 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 설명서예요. | Open | |
| 블로그 — Delphi에서 패스키, SAML SSO, LDAP, TOTP 2FA로 로그인하기 여섯 개의 인증 컴포넌트가 하나의 Delphi 애플리케이션에서 어떻게 맞물리는지 설명해요. | Open |