[TIL] Token

Dev_minΒ·2019λ…„ 10μ›” 20일
0

TIL

λͺ©λ‘ 보기
24/61

πŸ‘‰ Token 기반 인증

μ™œ 토큰을 μ‚¬μš©ν•˜λŠ”κ°€?

μ„œλ²„ 기반 인증의 문제점
1. μ„Έμ…˜ : μœ μ €κ°€ 인증을 ν•  λ•Œ, μ„œλ²„λŠ” 이 기둝을 μ„œλ²„μ— μ €μž₯을 ν•΄μ•Όν•œλ‹€. 이λ₯Ό μ„Έμ…˜μ΄λΌκ³  λΆ€λ₯Έλ‹€. λŒ€λΆ€λΆ„μ˜ κ²½μš°μ—” λ©”λͺ¨λ¦¬μ— 이λ₯Ό μ €μž₯ν•˜λŠ”λ°, 둜그인 쀑인 μœ μ €μ˜ μˆ˜κ°€ λŠ˜μ–΄λ‚œλ‹€λ©΄? μ„œλ²„ 렘이 κ³ΌλΆ€ν™” κ°€λŠ₯μ„±, κ·Έλ₯Ό μœ„ν•΄ μ„Έμ…˜μ„ 데이터 λ² μ΄μŠ€μ— μ €μž₯ν•œλ‹€λ©΄? 이 λ˜ν•œ μœ μ €μ˜ μˆ˜κ°€ 많으면 λ°μ΄ν„°λ² μ΄μŠ€μ˜ μ„±λŠ₯에 무리λ₯Ό 쀄 수 μžˆλ‹€.
2. ν™•μž₯μ„± : μ„Έμ…˜μ„ μ‚¬μš©ν•˜λ©΄ μ„œλ²„λ₯Ό ν™•μž₯ν•˜λŠ” 것이 μ–΄λ €μ›Œμ§„λ‹€. μ„œλ²„μ˜ ν™•μž₯μ„±μ΄λž€ ? 더 λ§Žμ€ νŠΈλž˜ν”½μ„ κ°λ‹Ήν•˜κΈ° μœ„ν•˜μ—¬ μ—¬λŸ¬κ°œμ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό λŒλ¦¬κ±°λ‚˜, μ—¬λŸ¬λŒ€μ˜ μ„œλ²„ 컴퓨터λ₯Ό μΆ”κ°€ν•˜λŠ”κ²ƒμ„ 의미, μ„Έμ…˜μ„ μ΄μš©ν•˜λ©΄ λΆ„μ‚°λœ μ‹œμŠ€ν…œμ„ μ„€κ³„ν•˜λŠ”κ±΄ λΆˆκ°€λŠ₯ν•œ 것은 μ•„λ‹ˆμ§€λ§Œ 과정이 맀우 볡작
3. CORS(Cross-Origin Resource Sharing) : μ„Έμ…˜μ„ 관리 ν•  λ•Œ 자주 μ‚¬μš©λ˜λŠ” μΏ ν‚€λŠ” 단일 도메인 및 μ„œλΈŒ λ„λ©”μΈμ—μ„œλ§Œ μž‘λ™ν•˜λ„λ‘ 섀계.

πŸŽ‰ μž‘λ™ 원리

토큰 κΈ°λ°˜μ‹œμŠ€ν…œμ€ stateless이닀. λ¬΄μƒνƒœ, 즉 μƒνƒœμœ μ§€λ₯Ό ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것. μ΄λŠ” 더이상이 μ‹œμŠ€ν…œμ—μ„œ μœ μ €μ˜ 인증 정보λ₯Ό μ„œλ²„λ‚˜ μ„Έμ…˜μ— 담아두지 μ•ŠλŠ”λ‹€λŠ” 것이닀.
1. μœ μ €κ°€ 아이디와 λΉ„λ°€λ²ˆν˜Έλ‘œ λ‘œκ·ΈμΈμ„ ν•œλ‹€.
2. μ„œλ²„μΈ‘μ—μ„œ ν•΄λ‹Ή 계정정보λ₯Ό κ²€μ¦ν•œλ‹€.
3. 계정정보가 μ •ν™•ν•˜λ‹€λ©΄, μ„œλ²„μΈ‘μ—μ„œ μœ μ €μ—κ²Œ signed 토큰을 λ°œκΈ‰
(signed의 μ˜λ―ΈλŠ” ν•΄λ‹Ή 토큰이 μ„œλ²„μ—μ„œ μ •μƒμ μœΌλ‘œ λ°œκΈ‰λœ ν† ν°μž„μ„ 증λͺ…ν•˜λŠ” signatureλ₯Ό μ§€λ‹ˆκ³  μžˆλ‹€)
4. ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ 전달받은 토큰을 μ €μž₯해두고, μ„œλ²„μ— μš”μ²­μ„ ν•  λ•Œλ§ˆλ‹€, ν•΄λ‹Ή 토큰을 ν•¨κ»˜ μ„œλ²„μ— 전달
5. μ„œλ²„λŠ” 토큰을 κ²€μ¦ν•˜κ³ , μš”μ²­μ— 응닡
(μ›Ήμ„œλ²„μ—μ„œ 토큰을 μ„œλ²„μ— 전달 ν•  λ•Œμ—λŠ”, HTTP μš”μ²­μ˜ 헀더에 토큰값을 ν¬ν•¨μ‹œμΌœμ„œ 전달)

πŸ‘‰ JWT = JSON Web Token

JWTλŠ” ν•„μš”ν•œ λͺ¨λ“  정보λ₯Ό 자체적으둜 μ§€λ‹ˆκ³  μžˆλ‹€. JWT μ‹œμŠ€ν…œμ—μ„œ λ°œκΈ‰λœ 토큰은, 토큰에 λŒ€ν•œ 기본정보, 전달할 정보, 그리고 토큰이 κ²€μ¦λλ‹€λŠ” 것을 증λͺ…ν•΄μ£ΌλŠ” signatureλ₯Ό ν¬ν•¨ν•˜κ³  μžˆλ‹€. JWTλŠ” μžκ°€μˆ˜μš©μ μœΌλ‘œ 두 개체 μ‚¬μ΄μ—μ„œ μ‰½κ²Œ 전달 될 수 μžˆλ‹€. μ›Ήμ„œλ²„μ˜ 경우 HTTP의 헀더에 λ„£μ–΄μ„œ 전달 ν•  μˆ˜λ„ 있고, URL의 νŒŒλΌλ―Έν„°λ‘œ 전달 ν•  수 μžˆλ‹€.

profile
TIL record

0개의 λŒ“κΈ€