ν‹°μŠ€ν† λ¦¬ λ·°

πŸ’‘ λͺ¨λ°”일 μ›Ή μ‹œμŠ€ν…œ 인증 κ°œμ„  μ œμ•ˆ (Email/SMS 인증)
SSO(Single Sign-On)λ₯Ό μ‚¬μš©ν•˜μ§€ λͺ»ν•˜λŠ” λͺ¨λ°”일 μ›Ή μ‹œμŠ€ν…œμ— 이메일(Email) 및 SMS 인증 번호λ₯Ό ν†΅ν•œ 인증 방식을 λ„μž…ν•˜λŠ” 것은 μ‚¬μš©μž νŽΈμ˜μ„±κ³Ό λ³΄μ•ˆμ„ κ°œμ„ ν•  수 μžˆλŠ” 쒋은 λ°©μ•ˆμž…λ‹ˆλ‹€. μ•„λž˜μ—μ„œλŠ” ν•„μš”ν•œ DB μΆ”κ°€ ν•­λͺ©κ³Ό 인증 ν”„λ‘œμ„ΈμŠ€λ₯Ό μ„€λͺ…λ“œλ¦½λ‹ˆλ‹€.
1. πŸ’Ύ λ°μ΄ν„°λ² μ΄μŠ€(DB) μΆ”κ°€ ν•­λͺ©
인증 번호 λ°œμ†‘ 및 확인을 μœ„ν•΄ μž„μ‹œ 정보λ₯Ό μ €μž₯ν•  λ³„λ„μ˜ ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜λŠ” 것을 ꢌμž₯ν•©λ‹ˆλ‹€. κΈ°μ‘΄ μ‚¬μš©μž 정보 ν…Œμ΄λΈ”(User Table)에 μΆ”κ°€ν•  μˆ˜λ„ μžˆμ§€λ§Œ, λ³΄μ•ˆ 및 κ΄€λ¦¬μ˜ μš©μ΄μ„±μ„ μœ„ν•΄ λΆ„λ¦¬ν•˜λŠ” 것이 μΌλ°˜μ μž…λ‹ˆλ‹€.
| ν…Œμ΄λΈ” λͺ… | ν•­λͺ© (Column Name) | 데이터 νƒ€μž… | μ„€λͺ… | λΉ„κ³  |
|---|---|---|---|---|
| 인증_둜그 (Auth_Log) | id | INT (PK) | 고유 μ‹λ³„μž | μžλ™ 증가 |
|  | user_identifier | VARCHAR | 인증 λŒ€μƒ μ‚¬μš©μž μ‹λ³„μž (Email λ˜λŠ” Phone Number) | 인덱슀 ν•„μš” |
|  | auth_code | VARCHAR/INT | λ°œκΈ‰λœ 인증 번호 (6자리 λ“±) |  |
|  | code_type | VARCHAR | 인증 μ’…λ₯˜ ('EMAIL' λ˜λŠ” 'SMS') |  |
|  | created_at | DATETIME | 인증 번호 λ°œκΈ‰ μ‹œκ° |  |
|  | expires_at | DATETIME | 인증 번호 만료 μ‹œκ° (예: λ°œκΈ‰ ν›„ 5λΆ„) |  |
|  | is_verified | BOOLEAN | 인증 성곡 μ—¬λΆ€ | κΈ°λ³Έκ°’: FALSE |
2. βš™οΈ 인증 ν”„λ‘œμ„ΈμŠ€ (Email/SMS 곡톡)
인증 번호λ₯Ό μš”μ²­ν•˜κ³  ν™•μΈν•˜λŠ” 과정은 μ•„λž˜μ™€ 같은 λ‹¨κ³„λ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.
1단계: μ‚¬μš©μž 인증 μš”μ²­
* μ‚¬μš©μž μž…λ ₯: μ‚¬μš©μžκ°€ 둜그인 ν™”λ©΄μ—μ„œ 이메일 μ£Όμ†Œ λ˜λŠ” νœ΄λŒ€ν° 번호λ₯Ό μž…λ ₯ν•˜κ³  '인증번호 λ°›κΈ°'λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€.
* μ„œλ²„ 검증: μ„œλ²„λŠ” μž…λ ₯된 μ‹λ³„μžκ°€ λ“±λ‘λœ μ‚¬μš©μžμΈμ§€ ν™•μΈν•©λ‹ˆλ‹€.
* 인증번호 생성: μ„œλ²„λŠ” λžœλ€ν•œ 6자리 숫자 λ“±μ˜ 인증 번호λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
2단계: 인증번호 λ°œμ†‘ 및 DB μ €μž₯
* DB μ €μž₯: μ„œλ²„λŠ” μƒμ„±λœ 인증 번호, μ‚¬μš©μž μ‹λ³„μž, λ°œκΈ‰ μ‹œκ°, 만료 μ‹œκ°μ„ 인증_둜그 ν…Œμ΄λΈ”μ— μ €μž₯ν•©λ‹ˆλ‹€.
   * 팁: λ³΄μ•ˆμ„ μœ„ν•΄ 기쑴에 λ§Œλ£Œλ˜μ§€ μ•Šμ€ ν•΄λ‹Ή μ‚¬μš©μžμ˜ 인증 번호 λ ˆμ½”λ“œλŠ” μ‚­μ œν•˜κ±°λ‚˜ '만료됨'으둜 μ²˜λ¦¬ν•©λ‹ˆλ‹€.
* λ°œμ†‘: μ„œλ²„λŠ” 이메일 전솑 API λ˜λŠ” SMS 전솑 APIλ₯Ό μ΄μš©ν•΄ μ‚¬μš©μžμ—κ²Œ 인증 번호λ₯Ό λ°œμ†‘ν•©λ‹ˆλ‹€.
3단계: μ‚¬μš©μž 인증번호 μž…λ ₯
* μ‚¬μš©μž μž…λ ₯: μ‚¬μš©μžλŠ” μˆ˜μ‹ ν•œ 인증 번호λ₯Ό ν™”λ©΄μ˜ μž…λ ₯창에 μž…λ ₯ν•˜κ³  '인증 확인'을 μš”μ²­ν•©λ‹ˆλ‹€.
4단계: 인증번호 확인 및 둜그인
* DB 쑰회: μ„œλ²„λŠ” 인증_둜그 ν…Œμ΄λΈ”μ—μ„œ μ‚¬μš©μž μ‹λ³„μžμ— ν•΄λ‹Ήν•˜λŠ” κ°€μž₯ μ΅œκ·Όμ— λ°œκΈ‰λœ 인증 번호 기둝을 μ‘°νšŒν•©λ‹ˆλ‹€.
* μœ νš¨μ„± 검증:
   * 일치 μ—¬λΆ€ 확인: μ‚¬μš©μžκ°€ μž…λ ₯ν•œ λ²ˆν˜Έμ™€ DB의 auth_codeκ°€ μΌμΉ˜ν•˜λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
   * 만료 μ‹œκ° 확인: DB의 expires_at μ‹œκ°μ΄ ν˜„μž¬ μ‹œκ°λ³΄λ‹€ 이후인지 ν™•μΈν•˜μ—¬ λ§Œλ£Œλ˜μ§€ μ•Šμ•˜λŠ”μ§€ κ²€μ¦ν•©λ‹ˆλ‹€.
* 인증 성곡/μ‹€νŒ¨:
   * 성곡: 두 κ°€μ§€ 검증을 λͺ¨λ‘ ν†΅κ³Όν•˜λ©΄ ν•΄λ‹Ή λ ˆμ½”λ“œμ˜ is_verifiedλ₯Ό TRUE둜 μ—…λ°μ΄νŠΈν•˜κ³ , μ‚¬μš©μžμ—κ²Œ 둜그인 성곡 처리(예: μ„Έμ…˜ 생성 λ˜λŠ” JWT λ°œκΈ‰)λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.
   * μ‹€νŒ¨: μΌμΉ˜ν•˜μ§€ μ•Šκ±°λ‚˜ 만료된 경우 인증 μ‹€νŒ¨ λ©”μ‹œμ§€λ₯Ό μ‚¬μš©μžμ—κ²Œ ν‘œμ‹œν•©λ‹ˆλ‹€.
3. πŸ›‘οΈ λ³΄μ•ˆ κ³ λ € 사항
* 만료 μ‹œκ°„ μ„€μ •: 인증 λ²ˆν˜ΈλŠ” λ°˜λ“œμ‹œ 5λΆ„ 이내 λ“±μ˜ 짧은 만료 μ‹œκ°„μ„ μ„€μ •ν•˜μ—¬ μž¬μ‚¬μš©μ„ λ°©μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€.
* μž¬μ‹œλ„ μ œν•œ: 짧은 μ‹œκ°„ 내에 인증 μš”μ²­ νšŸμˆ˜λ‚˜ 인증번호 μž…λ ₯ μ‹€νŒ¨ νšŸμˆ˜μ— μ œν•œ(Throttle)을 두어 무차별 λŒ€μž… 곡격(Brute Force Attack)을 λ°©μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€.
* 둜그 ν™œμš©: 인증_둜그 ν…Œμ΄λΈ”μ€ λ³΄μ•ˆ 감사 및 이상 ν–‰μœ„ 뢄석에도 ν™œμš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.
이 ν”„λ‘œμ„ΈμŠ€λ₯Ό 톡해 SSO 없이도 μ•ˆμ „ν•˜κ³  νŽΈλ¦¬ν•œ λͺ¨λ°”일 μ›Ή 인증 μ‹œμŠ€ν…œμ„ ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€.
ν˜Ήμ‹œ 이 λ‚΄μš©μ„ 기반으둜 μ œμ•ˆ 메일 μ΄ˆμ•ˆ μž‘μ„±μ„ λ„μ™€λ“œλ¦΄κΉŒμš”?

곡지사항
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
Total
Today
Yesterday
링크
Β«   2026/04   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
κΈ€ 보관함