pile·
보안·twilio-engTwilio Engineering·

Python으로 TOTP 기반 패스워드리스 인증 구현하기 (Twilio Verify)

Twilio Verify API와 Python FastAPI를 활용해 TOTP(Time-based One-Time Password) 기반 패스워드리스 인증을 구현하는 방법을 다룬다. Authy 같은 인증 앱과 QR 코드 스캔으로 2FA를 설정하고, 이후 생성되는 6자리 코드로 로그인하는 3단계 흐름을 FastAPI로 구현한다.

핵심 포인트
  • Twilio Verify API가 TOTP Factor 생성, QR 코드 URI 제공, 코드 검증을 모두 처리해 자체 TOTP 라이브러리 없이 구현 가능하다
  • 3단계 흐름: 사용자명 제출 + Factor 생성 → QR 스캔 + 초기 코드 검증(활성화) → 이후 6자리 코드로 로그인
  • FastAPI + Jinja2 + 세션 미들웨어 조합으로 멀티 스텝 인증 상태를 유지한다
  • 비밀번호 방식 대비 모바일 기기 기반 인증으로 탈취 위험을 줄인다
상세 정리
  • 의존성: FastAPI, Uvicorn, twilio Python SDK, python-dotenv, qrcode, Jinja2 설치 필요
  • 환경 설정: .env 파일에 TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_VERIFY_SERVICE_SID 설정
  • Factor 생성: Twilio REST API로 TOTP Factor 리소스 생성 → binding.uri 반환 → QR 코드 이미지로 변환해 브라우저에 표시
  • Factor 활성화: 사용자가 Authy/Google Authenticator로 QR 스캔 후 첫 6자리 코드 제출 → Verify API 검증 → Factor 상태 verified 전환
  • 이후 인증: 앱에서 생성된 코드를 /validate 엔드포인트에 제출 → Verify API로 검증 → 로그인 완료
  • 세션 관리: FastAPI 세션 미들웨어로 Factor SID 등 상태를 요청 간 유지
  • 3개 엔드포인트: /create(Factor 생성 + QR 표시), /verify(초기 코드 검증), /validate(로그인 코드 확인)
  • 보안 고려: TOTP 시크릿을 Twilio가 관리해 서버에 직접 보관하지 않아도 된다
왜 읽나Python 웹앱에 패스워드리스 2FA를 빠르게 추가하려는 백엔드 엔지니어에게 Twilio Verify TOTP 연동의 실전 가이드.
twilio-eng
Twilio Engineering 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·gitlab-engGitLab Blog·

    Serena MCP 에이전트의 치명적 원격 코드 실행 취약점 분석

    GitLab 보안팀이 AI 코딩 에이전트 Serena(월 PyPI 다운로드 13.6만 건)에서 치명적 원격 코드 실행 취약점을 발견했다. Jinja2 비샌드박스 환경과 신뢰 모델의 미검사 경로가 결합해 개발자가 악의적 저장소를 열기만 해도 코드가 실행된다. serena-agent 1.7.0에서 SandboxedEnvironment 교체로 수정 완료됐다.

    요약 이어보기
    #mcp#security#rce+2