SMS 인증
Solapi 기반 SMS OTP 인증 시스템의 설정과 사용법을 안내합니다.
개요
kindie는 Solapi를 통해 SMS OTP 인증을 제공합니다. 회원가입 시 전화번호 인증, 본인확인 등에 사용됩니다.
Solapi 설정
1. 가입 및 발신번호 등록
- Solapi에 가입
- 발신번호 관리에서 발신번호 등록 (인증 필요)
- API 키 관리에서 API 키와 시크릿 발급
2. 환경변수 설정
SOLAPI_API_KEY="your-api-key"
SOLAPI_API_SECRET="your-api-secret"
SMS_SENDER_NUMBER="01012345678"
# 알림톡을 사용할 때만 필요
SOLAPI_PFID="KA01PFxxxxxxxxxxxxxxxxxxxx"발신번호는 반드시 Solapi에서 사전 등록한 번호여야 합니다.
OTP 인증 플로우
1. 사용자: 전화번호 입력
2. 서버: 6자리 OTP 생성 → Solapi API로 SMS 발송
3. 서버: OTP를 DB에 저장 (5분 만료)
4. 사용자: 수신한 OTP 입력
5. 서버: OTP 검증 (일치 여부 + 만료 확인)
6. 서버: 인증 완료 처리Rate Limiting
무분별한 SMS 발송을 방지하기 위해 기본 Rate Limit이 설정되어 있습니다:
// config.ts
export const smsConfig = {
otpLength: 6, // OTP 자릿수
otpExpiryMinutes: 5, // OTP 유효시간
maxAttemptsPerHour: 5, // 시간당 최대 시도 횟수
};관련 파일
lib/sms/
├── index.ts Solapi API 클라이언트 (SMS 발송)
└── verify.ts OTP 생성, 저장, 검증
app/api/sms/
├── send/route.ts SMS 발송 API
└── verify/route.ts OTP 검증 API
components/auth/
└── phone-verify-form.tsx 전화번호 인증 폼 UI기능 비활성화
SMS 인증이 불필요하다면:
// config.ts
export const features = {
// ...
sms: false,
};SMS 관련 환경변수를 설정하지 않아도 에러가 발생하지 않습니다.