본문 바로가기
Q&A2021년 11월 20일1분 읽기

2FA(이중 인증) 구현 방법을 알려주세요

장
장태호
조회 1077댓글 2

웹사이트에 TOTP 기반 2FA를 구현하고 싶습니다. 원리와 방법을 알려주세요.

댓글 2

김김영삼4년 전

TOTP(Time-based One-Time Password) 원리와 구현:

원리:

  1. 서버와 사용자가 동일한 시크릿 키를 공유
  2. 시크릿 키 + 현재 시간(30초 단위)을 HMAC-SHA1으로 해시
  3. 해시에서 6자리 숫자 추출
  4. 서버와 클라이언트가 같은 시간에 같은 코드 생성

구현 (Node.js):

// speakeasy 라이브러리 사용
const speakeasy = require("speakeasy");

// 시크릿 생성
const secret = speakeasy.generateSecret({ name: "MyApp" });
// secret.otpauth_url → QR 코드 생성

// 검증
const verified = speakeasy.totp.verify({
secret: secret.base32,
encoding: "base32",
token: userInput,
window: 1 // ±30초 허용
});

QR 코드는 qrcode 라이브러리로 생성하여 Google Authenticator에서 스캔하게 하면 됩니다.

오오수빈(guest)4년 전
저도 같은 궁금증이 있었는데 해결됐습니다.
Ctrl+Enter로 등록