ν°μ€ν 리 λ·°
π‘ λͺ¨λ°μΌ μΉ μμ€ν
μΈμ¦ κ°μ μ μ (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
- Eclipse
- JavaScript
- SEQUENCE
- VBS
- GitHub
- partition
- Powershell
- 컀νΌ
- dbeaver
- MariaDB
- Filter
- JSP
- LILI COFFEE
- diff
- λ¨μλ³ν
- table
- handdrip
- popup
- λ‘μ€ν°λ¦¬
- backup
- db
- MySQL
- oracle
- BAT
- Between
- Coffee
- 리리 컀νΌ
- date
- μ€νμ ν°
- SQL
| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 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 |
