요즘은 보안이 무엇보다 중요한 시대입니다. 특히 웹 서비스나 앱을 개발할 때 사용자 계정 보호를 위해 2단계 인증(2FA)을 도입하는 것이 필수가 되고 있습니다. 오늘은 그 중에서도 구글 OTP(Google Authenticator) 를 연동하는 개발 방법을 자세히 알아보겠습니다.
✅ 구글 OTP란?
Google Authenticator는 시간 기반 일회용 비밀번호(TOTP, Time-based One-Time Password)를 생성해주는 앱입니다. 사용자는 자신의 모바일 기기에 앱을 설치하고, 30초마다 갱신되는 인증 코드를 입력해 2단계 인증을 완료할 수 있습니다.
🔧 개발에 필요한 주요 기술 스택
- 백엔드 언어: Python, Node.js, Java 등 어떤 언어든 가능
- TOTP 라이브러리: pyotp(Python), speakeasy(Node.js), GoogleAuthenticator(Java 등)
- QR 코드 생성 라이브러리: qrcode, goqr.me API 등
🛠️ 구현 순서
1. 사용자 계정과 연동할 시크릿 키 생성
import pyotp
secret = pyotp.random_base32()
print("Secret Key:", secret)2. Google Authenticator 앱 등록용 QR 코드 생성
import pyotp
import qrcode
totp = pyotp.TOTP(secret)
uri = totp.provisioning_uri(name="username@example.com", issuer_name="MyApp")
img = qrcode.make(uri)
img.save("qrcode.png")사용자는 QR 코드를 Google Authenticator 앱으로 스캔하여 등록합니다.
3. 인증 코드 확인 로직
user_input = "123456" # 사용자가 입력한 코드
if totp.verify(user_input):
print("인증 성공")
else:
print("인증 실패")💡 개발 팁
- 시간 동기화 오류를 방지하려면 서버 시간은 NTP 서버 기준으로 정확히 맞춰야 합니다.
- 시크릿 키는 안전하게 암호화해서 저장해야 하며, DB에 평문으로 저장하지 마세요.
- QR 코드 생성 시, 사용자 이메일과 서비스명을 정확히 넣는 것이 인증 앱 내에서 혼란을 줄입니다.
🔐 2단계 인증을 도입하면 이런 점이 좋아요!
- 해킹 방지: 패스워드 탈취만으로는 계정 접근 불가
- 사용자 신뢰도 상승: 보안에 신경 쓰는 서비스라는 인식 제공
- 다양한 보안 규제 준수: 금융, 헬스케어 등 분야에서 필수 조건
📝 마무리
Google OTP를 연동하는 것은 어렵지 않지만, 사용자 경험과 보안을 동시에 고려해야 하는 작업입니다. 위 내용을 기반으로 여러분의 서비스에 강력한 2단계 인증 기능을 쉽게 구현할 수 있습니다.
댓글
댓글 쓰기