TIL

Redis와 SMTP를 이용한 임시비밀번호 발급 기능

DongHo 2024. 12. 27. 19:29

들어가며

안녕하세요🙌:) 개발자 Bang99입니다.
MOTIVE 프로젝트(ERP)에서 회원 도메인을 맡아 진행했으며, 진행한 이유와 어떻게 구현하였는지에 대해 설명드리겠습니다.

 

문제 정의

MOTIVE 프로젝트(ERP)에서 회원 도메인을 담당하게 된 저는 로그인 화면에서 사용자가 비밀번호를 잊은 경우, 임시 비밀번호를 발급하는 기능이 필요하다는 요구사항이 있어 이를 구현하게 되었습니다. 이 과정에서 여러 기술적 선택지가 있었고, 각 기술의 장단점을 분석하여 최적의 방법을 결정하기 위한 고민이 필요했습니다.

MOTIVE 요구사항 명세서

 

선택 가능한 기술 분석

기술 장점 단점
Redis & SMTP - Redis는 빠르고 실시간 데이터 처리 가능
- 이메일을 통한 안정적인 비밀번호 전달
- Redis의 데이터 관리 필요
- SMTP 이메일 서비스 설정 필요
SMS 서비스 연동 - 이메일 확인 없이 휴대폰 번호만으로 인증 가능
- 빠른 전달, 높은 접근성
- 문자 전송 비용 발생
OAuth 기반 비밀번호 재설정 - 외부 인증 기관을 활용해 보안성 및 신뢰도 향상 - OAuth 계정을 사용하지 않는 사용자의 불편함
OTP 생성 및 QR 코드 제공 - 보안성 높고 재설정 절차 간편
- 2단계 인증으로 보안 강화
- 사용자에게 OTP 앱 설치 요구
쿠키 기반 자동 로그인 링크 제공 - 새로운 비밀번호 입력 없이 로그인 가능 - 링크 유출 시 보안 취약점 발생 가능

 

기술 선택 및 구현

Redis와 SMTP 사용 이유

1. Redis 선정 이유

  • 속도: Redis는 메모리 기반 데이터 저장소로, 임시 비밀번호와 같은 실시간 데이터를 빠르게 처리하고 관리할 수 있습니다. 즉, 데이터를 빠르게 관리할 수 있습니다.
  • TTL: Redis는 TTL(Time-to-Live) 기능을 지원하여, 임시 비밀번호의 유효 기간을 설정하고 만료된 데이터를 자동으로 삭제할 수 있습니다. 이로써 보안을 강화하고, 불필요한 데이터 처리를 방지할 수 있습니다. 또한, MOTIVE는 ERP 시스템이다 보니 외부 인증 기관을 통한 로그인이 불가능하여, 시스템 내에서만 유효 기간을 관리하고 자동으로 만료되는 Redis를 사용하게 되었습니다.

2. SMTP의 장점

  • 이메일 보편성: 이메일은 모든 사용자가 이용하는 수단으로, 별도의 앱 설치 없이 즉시 비밀번호 재설정 정보를 전달할 수 있습니다. 이메일을 통한 비밀번호 전달은 사용자에게 직관적이고 쉽게 접근 가능한 방법입니다. 물론, SMS 서비스도 모든 사용자가 이용하는 수단이지만 비용이 발생한다는 측면에서 사용하지 않았습니다. 또한, OTP 앱은 사용자가 추가로 설치해야 한다는 점에서 불편함을 유발할 수 있어 SMTP 방식을 사용하게 되었습니다.

 

구현 로직

 

결과

 

소감

ERP 프로젝트에 알맞게 임시비밀번호 발급 로직을 구현하기위해 다양한 기술들을 비교하고 분석하면서 각 기술의 장단점을 고려해 기술(Redis&SMTP)을 선택하는 과정에서 문제 해결 능력기술 선택의 중요성에 대해 많은 것을 배운 경험이였습니다.
이런 경험을 통해 문제를 다각도로 분석하고 적합한 해결책을 찾아내는 능력이 향상되었으며, 기술적 결정을 내리는 데 있어 사용자 편의성, 성능 등 여러 요소를 종합적으로 고려하는 방법을 익혔습니다. 앞으로 이러한 경험을 바탕으로, 다양한 상황에서 더 효과적이고 실용적인 기술을 선택할 수 있는 개발자로 성장한 것 같습니다.

 

코드

 

GitHub - Bang1999/MOTIVE: 최적의 영업을 위한 영업관리 시스템

최적의 영업을 위한 영업관리 시스템. Contribute to Bang1999/MOTIVE development by creating an account on GitHub.

github.com