Session / Token(JWT)(1)

홍석진·2021λ…„ 9μ›” 23일
0

Back-End

λͺ©λ‘ 보기
1/3
post-thumbnail

πŸ“’μ •λ¦¬ν•˜κ²Œλœ κ³Όμ •

μ›Ή κ°œλ°œμ„ ν•˜λ‹€ 보면 인증/인가 과정을 μ°Έ 많이 κ²ͺμŠ΅λ‹ˆλ‹€. 둜그인 인증 λΆ€ν„° νšŒμ›κΆŒν•œ λ“± μ΄λŸ¬ν•œ 과정듀을 μ €λŠ” λŒ€λΆ€λΆ„ Session을 많이 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬λŸ¬κΈ€μ„ 읽닀가 JWT(Json Web Token)μ΄λΌλŠ” 것을 μ ‘ν•˜κ²Œ λ˜μ—ˆκ³  μ§€κΈˆκ» 가지고 μžˆμ—ˆλ˜ 생각듀이 많이 λ³€ν–ˆμŠ΅λ‹ˆλ‹€.


HTTP

λ¨Όμ € HTTPλž€ 무엇인가 ν™•μ‹€ν•˜κ²Œ μ •μ˜ 내리고 κ°€κ² μŠ΅λ‹ˆλ‹€.

HTTP(Hyper Text Transfer Protocal) ❓

  • 말 κ·ΈλŒ€λ‘œ ν•˜μ΄νΌν…μŠ€νŠΈ λ¬Έμ„œλ₯Ό κ΅ν™˜ν•˜κΈ° μœ„ν•œ ν”„λ‘œν† μ½œμž…λ‹ˆλ‹€. 전솑할 수 μžˆλŠ” λ°μ΄ν„°λŠ” HTML λ¬Έμ„œ, 이미지, λ™μ˜μƒ, μ˜€λ””μ˜€, ν…μŠ€νŠΈ λ“± μ—¬λŸ¬μ’…λ₯˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.
  • TCP/IP 기반으둜 ν•œ μ§€μ μ—μ„œ λ‹€λ₯Έ μ§€μ μœΌλ‘œ μš”μ²­(request)κ³Ό 응닡(response)을 μ „μ†‘ν•©λ‹ˆλ‹€.

νŠΉμ§•μœΌλ‘œλŠ” μ—¬λŸ¬κ°€μ§€κ°€ μžˆμ§€λ§Œ 였늘 λ‹€λ£° λ‚΄μš©μ— λ°€μ ‘ν•œ 관련이 μžˆλŠ” λ¬΄μƒνƒœ(Stateless) λΌλŠ” 것을 μžμ„Έν•˜κ²Œ μ„€λͺ…ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€. Statelessν•œ νŠΉμ„±μ€ ν΄λΌμ΄μ–ΈνŠΈμ˜ 정보λ₯Ό μ €μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ κ·ΈλŸ¬ν•œ ν΄λΌμ΄μ–ΈνŠΈμ˜ 정보듀을 계속 μš”μ²­ν•΄μ•Όν•©λ‹ˆλ‹€. 계속 μš”μ²­ν•˜λ©΄ 단점이 뭐냐, λ°”λ‘œ λ„€νŠΈμ›Œν¬ λ¦¬μ†ŒμŠ€ μš”κ΅¬λŸ‰μ΄ λ§Žμ•„μ§€κ³ , 맀번 μƒˆλ‘œμš΄ 연결을 μ‹œλ„/ν•΄μ œ 과정을 κ±°μΉ˜λ©΄μ„œ μ˜€λ²„ν—€λ“œ(μ–΄λ–€ 처리λ₯Ό ν•˜κΈ° μœ„ν•΄ λ“€μ–΄κ°€λŠ” 간접적인 μ²˜λ¦¬μ‹œκ°„)κ°€ λ°œμƒν•΄μ„œ λ‹€μˆ˜μ˜ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‘΄μž¬ν•  λ•Œ κ΄€λ¦¬ν•˜κΈ°κ°€ λ¬΄μ²™μ΄λ‚˜ μ–΄λ ΅μŠ΅λ‹ˆλ‹€. λ¬Όλ‘  μ§€μ •λœ μ‹œκ°„λ„μ•ˆ νŒ¨ν‚· κ΅ν™˜μ΄ 없을 경우 주기적으둜 νŒ¨ν‚·μ„ λ³΄λ‚΄λŠ” keepAlive μ†μ„±μœΌλ‘œ μ–΄λŠμ •λ„μ˜ μ˜€λ²„ν—€λ“œλ₯Ό 쀄일 수 μžˆμ§€λ§Œ μ„œλ²„κ°€ λ°”μ˜λ©΄ ν”„λ‘œμ„ΈμŠ€κ°€ μ—„μ²­λ‚˜κ²Œ λŠ˜μ–΄λ‚˜μ„œ λ©”λͺ¨λ¦¬λ₯Ό 많이 μž‘μ•„λ¨ΉμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ΄λŸ¬ν•œ 결함(?)사싀 κ²°ν•¨κΉŒμ§„ μ•„λ‹ˆμ§€λ§Œ..을 ν•΄κ²°ν•˜κ³ μž μƒνƒœμœ μ§€(Stateful) 의 νŠΉμ„±μ„ 가진 쿠킀와 μ„Έμ…˜μ΄λΌλŠ” 것을 μ΄μš©ν•΄μ„œ ν΄λΌμ΄μ–ΈνŠΈμ˜ μ •λ³΄μ˜ μƒνƒœλ₯Ό μœ μ§€ν•˜λŠ” 방식을 μ΄μš©ν–ˆμŠ΅λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈ 정보 μƒνƒœ μœ μ§€λŠ” 둜그인, μž₯λ°”κ΅¬λ‹ˆλ“± 정보λ₯Ό 가지고 μžˆμ–΄μ•Ό ν•  λ•Œμ— μœ μš©ν•©λ‹ˆλ‹€.

Cookie❓
μΏ ν‚€λŠ” μ›Ή μ„œλ²„κ°€ λΈŒλΌμš°μ €μ—κ²Œ μ§€μ‹œν•˜μ—¬ μ‚¬μš©μžμ˜ 둜컬 컴퓨터에 μžˆλŠ” 파일 λ˜λŠ” λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜λŠ” μž‘μ€ 기둝 정보 νŒŒμΌμž…λ‹ˆλ‹€. μ΄λ ‡κ²Œ μ €μž₯된 μ •λ³΄λŠ” 인터넷 μ‚¬μš©μžκ°€ 같은 μ›Ήμ‚¬μ΄νŠΈλ₯Ό λ°©λ¬Έν• λ•Œ λ§ˆλ‹€ 읽히고 μˆ˜μ‹œλ‘œ μƒˆλ‘œμš΄ μ •λ³΄λ‘œ λ°”λ€” 수 μžˆμŠ΅λ‹ˆλ‹€. μΏ ν‚€λŠ” μ΄λŸ¬ν•œ 정보λ₯Ό λ³΄κ΄€ν•˜μ—¬ HTTP와 μ›Ή μ„œλ²„κ°„μ— ν†΅μ‹ μ—μ„œ HTTP Header에 μΆ”κ°€ν•˜μ—¬ λ³΄λ‚΄μ§€λ©΄μ„œ μ •λ³΄μœ μ§€μ— 도움을 μ€λ‹ˆλ‹€. ν•˜μ§€λ§Œ μΏ ν‚€μ˜ λ‚΄μš©μ€ μ‰½κ²Œ μ—΄λžŒλ˜κ³  λΆ„μ„λ˜μ–΄μ„œ μ—¬λŸ¬κ°€μ§€ λ³΄μ•ˆμƒ 취약점을 λ“œλŸ¬λƒ…λ‹ˆλ‹€. 그리고 HTTP Header에 μΆ”κ°€ν•΄μ„œ 보내지기 λ•Œλ¬Έμ— μƒλ‹Ήν•œ νŠΈλž™ν”½μ„ λ°œμƒμ‹œν‚΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ¬Έμ œμ μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ Session이 λ“±μž₯ν•©λ‹ˆλ‹€.

Session❓
μ„Έμ…˜μ€ μΏ ν‚€κ°€ λΈŒλΌμš°μ €μ— μΏ ν‚€ν˜•νƒœλ‘œ μ €μž₯λ˜λŠ” 것과 달리 μ ‘μ†ν•œ μ„œλ²„DB에 정보λ₯Ό μ €μž₯ν•©λ‹ˆλ‹€. 그리고 ν΄λΌμ΄μ–ΈνŠΈλŠ” μœ μΌν•œ ID(HTTP Session ID)λ₯Ό μΏ ν‚€λ‘œ λ©”λͺ¨λ¦¬μ— μ €μž₯된 ν˜•νƒœλ‘œ 가지고 μžˆμŠ΅λ‹ˆλ‹€. 이에 따라 λΈŒλΌμš°μ €κ°€ μ’…λ£Œλ˜λ©΄ μ‚¬λΌμ§‘λ‹ˆλ‹€. μ„Έμ…˜μ˜ μž₯점은 각 ν΄λΌμ΄μ–ΈνŠΈ λ§ˆλ‹€ κ³ μœ ν•œ IDλ₯Ό λΆ€μ—¬ν•΄μ„œ 각각의 κΆŒν•œ λΆ€μ—¬ν•˜κΈ°κ°€ νŽΈν•˜κ³  그에 λ”°λ₯Έ μš”κ΅¬μ— λ§žλŠ” μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•  수 있게 λ©λ‹ˆλ‹€. 그리고 μΏ ν‚€κ°€ 가지고 있던 λ³΄μ•ˆ 문제λ₯Ό 정보λ₯Ό μ„œλ²„μ— μ €μž₯ν•˜λŠ” λ°©λ²•μœΌλ‘œ λ³΄μ•ˆμ„±μ„ λ†’κ²Œ ν–ˆλ‹€λŠ” 것 μž…λ‹ˆλ‹€. λ‹¨μ μœΌλ‘œλŠ” μ„Έμ…˜μ€ μ„œλ²„μ— μ €μž₯λœλ‹€κ³  ν–ˆλŠ”λ° μ„œλ²„μ— μ €μ •λ˜λŠ” μ„Έμ…˜ λ•Œλ¬Έμ— μ„œλ²„μ— λ³„λ„μ˜ μ €μž₯ 곡간이 μš”κ΅¬λœλ‹€λŠ” 것 μž…λ‹ˆλ‹€.


μ„Έμ…˜λ°©μ‹μ΄ 뭐가 μ–΄λ•Œμ„œ?!

μ²˜μŒμ— μ–ΈκΈ‰ν–ˆλ˜ HTTP의 Stateless λ°©μ‹μ˜ νŠΉμ„±μ— 결함(?)을 ν•΄κ²°ν•˜κ³ μž Stateful의 νŠΉμ„±μ„ 가진 쿠킀와 μ„Έμ…˜μ„ μ΄μš©ν–ˆλ‹€κ³  λ§μ”€λ“œλ ΈμŠ΅λ‹ˆλ‹€. μ§€κΈˆκΉŒμ§€ μ„€λͺ…ν•œ 것은 λ¬Έμ œμ μ„ ν•΄κ²° ν•œ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ„Έμ…˜μ€ μ„œλ²„μ— μ €μž₯λœλ‹€κ³  λ§μ”€λ“œλ ΈμŠ΅λ‹ˆλ‹€. μ„œλ²„μ— μ €μž₯λ˜λŠ” 것은 λ³΄μ•ˆμ  μΈ‘λ©΄μ—μ„œ μž₯μ μ΄μ§€λ§Œ ν˜„μž¬λŠ” μ„œλΉ„μŠ€μ˜ ν™•μž₯성이 점점 κ°•μ‘°λ˜μ–΄μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€. μ„Έμ…˜λ°©μ‹μ€ λͺ¨λ˜ μ›Ήμ˜ ν™•μž₯μ„± λΆ€λΆ„μ—μ„œλŠ” μœ μ—°ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

μŠ€μΌ€μΌλ§

ν™•μž₯μ„±μ΄λž€, μ‹œμŠ€ν…œμ΄ μ œλŒ€λ‘œ κΈ°λŠ₯ν•˜κΈ° μœ„ν•΄ μš”κ΅¬μ‚¬ν•­μ— λ§žμΆ”μ–΄ μš©λŸ‰ 및 μ„±λŠ₯을 μ‘°μ •ν•˜λŠ” 것을 λ§ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μŠ€νŠœλ””μ˜€μ—μ„œ μ—¬λŸ¬ μ›Œν¬μŠ€ν…Œμ΄μ…˜μ΄ ν•˜λ‚˜μ˜ 곡유 μŠ€ν† λ¦¬μ§€λ₯Ό 톡해 μ˜μƒ νŽΈμ§‘μ„ 진행할 μ‹œ, 곡유 μŠ€ν† λ¦¬μ§€μ˜ μ΅œλŒ€ μš©λŸ‰μ΄ λΆ€μ‘±ν•΄μ§€κ±°λ‚˜ μ›Œν¬μŠ€ν…Œμ΄μ…˜μ˜ νŠΈλž˜ν”½μ΄ κ³ΌλΆ€ν•˜ λ˜λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이 경우 μš©λŸ‰ 및 μ„±λŠ₯을 늘리기 μœ„ν•΄ μ‹œμŠ€ν…œμ˜ ν™•μž₯이 ν•„μš”ν•œλ°, κ·Έ 방식을 μŠ€μΌ€μΌμ—…(μˆ˜μ§ν™•μž₯) κ³Ό μŠ€μΌ€μΌμ•„μ›ƒ(μˆ˜ν‰ν™•μž₯) 으둜 ꡬ뢄할 수 μžˆμŠ΅λ‹ˆλ‹€. 이것은 λŠ˜μ–΄λ‚˜λŠ” μš”μ²­μ— λ”°λ₯Έ μ„œλ²„ κ³ΌλΆ€ν•˜(νŠΈλ ˆν”½μ΄ 높아짐)을 ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œ μž…λ‹ˆλ‹€.
μŠ€μΌ€μΌμ—…(μˆ˜μ§ν™•μž₯) 의 경우 기쑴의 ν•˜λ“œμ›¨μ–΄μ˜ μ„±λŠ₯을 μ˜¬λ¦¬λŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ CPUλ₯Ό i3 -> i7으둜 μ˜¬λ¦¬λŠ” κ²ƒμž…λ‹ˆλ‹€. ν•˜λ“œμ›¨μ–΄ μ„±λŠ₯이 μ˜¬λΌκ°€λ©΄ 그만큼 더 μš”μ²­μ„ μ²˜λ¦¬ν•  λ•Œ μœ λ¦¬ν•  κ²ƒμž…λ‹ˆλ‹€. μŠ€μΌ€μΌ μ—…μ˜ μž₯점은 일단 ν•˜λ“œμ›¨μ–΄λ§Œ ꡐ체해주면 되기 λ•Œλ¬Έμ— 그만큼 μ‰½λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ μŠ€μΌ€μΌμ—…μ„ ν• μˆ˜λ‘ κΈ°μ‘΄ ν•˜λ“œμ›¨μ–΄μ˜ 냉각, 곡간, μ „λ ₯곡급 λ“±μ˜ λ¬Έμ œκ°€ λ°œμƒν•  수 있고, ν•˜λ“œμ›¨μ–΄ ν—ˆμš© λ²”μœ„ λ‚΄μ—μ„œλ§Œ ν™•μž₯이 κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμ— κ·Έ μ΄μƒμœΌλ‘œ μ—…κ·Έλ ˆμ΄λ“œλ₯Ό ν•˜κ³ μž ν•œλ‹€λ©΄ μƒˆλ‘œμš΄ μž₯λΉ„λ‘œ κ΅μ²΄ν•˜λŠ” 방법밖에 μ—†μŠ΅λ‹ˆλ‹€. μƒˆ μž₯λΉ„λ‘œ ꡐ체 μ‹œμ—λ„ 데이터 μ „μ²΄μ˜ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μž‘μ—…μ΄ ν•„μš”ν•΄ ν™•μž₯에 μ‹œκ°„μ΄ 였래걸리며, μ €μž₯된 데이터양에 따라 μž‘μ—…μ΄ μˆ˜κ°œμ›” κ±Έλ¦¬λŠ” κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€.
μŠ€μΌ€μΌμ•„μ›ƒ(μˆ˜ν‰ν™•μž₯) 의 경우 μž₯λΉ„λ₯Ό μΆ”κ°€ν•΄μ„œ ν™•μž₯ν•˜λŠ” 방식을 λ§ν•©λ‹ˆλ‹€. μ„œλ²„μ»΄ν“¨ν„°μ˜ λŒ€μˆ˜λ₯Ό 늘렀 μ„œλ²„ν•˜λ‚˜μ— λͺ°λ¦¬λ˜ νŠΈλ ˆν”½μ„ λΆ„μ‚°μ‹œν‚€λŠ” 것이죠. κΈ°μ‘΄ μ„œλ²„λ§ŒμœΌλ‘œ μš©λŸ‰μ΄λ‚˜ μ„±λŠ₯의 ν•œκ³„κ°€ 있으면, λΉ„μŠ·ν•œ μ‚¬μ–‘μ˜ μ„œλ²„λ₯Ό μ—°κ²°ν•΄ μΆ”κ°€λœ λΆ„λ§ŒνΌ μš©λŸ‰μ΄ 증가할 뿐만 μ•„λ‹ˆλΌ μ›Œν¬λ‘œλ“œλ₯Ό λΆ„λ‹΄ν•΄ μ„±λŠ₯을 λ†’μ΄λŠ” 병렬 μ»΄ν“¨νŒ…μ„ κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€μΌ€μΌμ•„μ›ƒμ— κ°€μž₯ 큰 μž₯점은 ν™•μž₯의 μœ μ—°μ„±μž…λ‹ˆλ‹€. μŠ€μΌ€μΌμ—…μ€ ν™•μž₯을 ν• λ•Œ 데이터 양에 따라 μž‘μ—…μ΄ 였래걸리고 νŠΈλ ˆν”½μ΄ λ†’μ•„μ§€λŠ” 것을 λŒ€λΉ„ν•΄ ν™•μž₯(λΉ„μš©νˆ¬μž)을 ν–ˆλŠ”λ° μ˜ˆμƒλ§ŒνΌ μš”κ΅¬λ˜μ§€ μ•Šμ•„ 손해λ₯Ό λ³΄λŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. 반면 μŠ€μΌ€μΌ 아웃에 경우 κ·Έλ•Œκ·Έλ•Œ ν•„μš”ν•œ 만큼 ν™•μž₯을 ν•  수 있기 λ•Œλ¬Έμ— μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έ 외에도 μΈν”„λΌμ˜ λ…Έν›„ν™”μ‹œμ—λ„ μŠ€μΌ€μΌ 업에 λΉ„ν•΄ μ—…κ·Έλ ˆμ΄λ“œ ν•˜κΈ°κ°€ νŽΈλ¦¬ν•˜κ³  νŠΉμ • 데이터λ₯Ό 찾을 λ•Œμ—λ„ 더 λΉ λ¦…λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ—¬λŸ¬ λ…Έλ“œλ₯Ό μ—°κ²°ν•΄ 병렬 μ»΄ν“¨νŒ… ν™˜κ²½μ„ κ΅¬μ„±ν•˜κ³  μœ μ§€ν•˜λ €λ©΄ μ‹œμŠ€ν…œ μ•„ν‚€ν…μ²˜μ— λŒ€ν•œ 높은 이해도가 μš”κ΅¬λ˜κ³  μ—¬λŸ¬ λ…Έλ“œμ— μ›Œν¬λ‘œλ“œλ₯Ό κ· λ“±ν•˜κ²Œ λΆ„μ‚° μ‹œν‚€κΈ° μœ„ν•΄ λ‘œλ“œλ°ΈλŸ°μ‹±(μ•„λž˜μ— μ„€λͺ…링크)이 ν•„μš”ν•©λ‹ˆλ‹€. 그리고 κ°œλ³„μ μΈ μ„±λŠ₯μ΄λ‚˜ μ•ˆμ •μ„± 뢀뢄은 ν•˜μ΄μ—”λ“œ ν•˜λ“œμ›¨μ–΄μ— λΉ„ν•΄ λΆ€μ‘±ν•˜λ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€.

μ„Έμ…˜λ°©μ‹κ³Ό ν™•μž₯μ„±

μœ„μ—μ„œ μŠ€μΌ€μΌμ—…κ³Ό μŠ€μΌ€μΌμ•„μ›ƒμ— λŒ€ν•΄μ„œ μ„€λͺ…을 λ“œλ ΈμŠ΅λ‹ˆλ‹€. 두 방법 λͺ¨λ‘ μž₯단점이 μžˆμ§€λ§Œ λŒ€λΆ€λΆ„μ˜ ITνšŒμ‚¬μ—μ„œλŠ” μŠ€μΌ€μΌμ•„μ›ƒ μ „λž΅μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. 상황에 따라 λ‹€λ₯΄κ² μ§€λ§Œ 평균적인 λΉ„μš©μ μΈ λΆ€λ‹΄κ³Ό μœ μ—°ν•œ λŒ€μ²˜κ°€ κ°€λŠ₯ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 이제 μ„Έμ…˜λ°©μ‹μ„ μ‚¬μš©ν–ˆμ„ λ•Œ μ™œ ν™•μž₯μ„±λΆ€λΆ„μ—μ„œ μœ μ—°ν•˜μ§€ λͺ»ν•œμ§€ 그림을 톡해 μ„€λͺ…λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

μœ„ 그림은 λ‹¨μΌμ„œλ²„μ— 경우 μ„Έμ…˜μž‘μ—…μ„ ν‘œν˜„ν•œ κ²ƒμž…λ‹ˆλ‹€. ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ‚¬μ΄ λ‘œλ“œλ²¨λŸ°μ„œλŠ” λ‘œλ“œλ°ΈλŸ°μ‹± μž‘μ—…μ„ ν•΄μ€λ‹ˆλ‹€. λ‘œλ“œλ°ΈλŸ°μ‹±μ€ μ—¬λŸ¬ λŒ€μ˜ μ„œλ²„λ₯Ό 두고 μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•˜λŠ” λΆ„μ‚° 처리 μ‹œμŠ€ν…œμ—μ„œ ν•„μš”ν•œ κΈ°μˆ μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ μ•„λž˜μ— 2.링크 λ₯Ό 확인해 λ³΄μ‹œλ©΄ 도움이 될 것 κ°™μŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ 단일 μ„œλ²„μ— 경우 μ„Έμ…˜λ°©μ‹μ€ μ•„λ¬΄λŸ° 문제점이 μ—†μŠ΅λ‹ˆλ‹€.


λ‹€μŒ κ·Έλ¦Όμž…λ‹ˆλ‹€. μ„œλ²„κ°€ μƒˆλ‘œ μΆ”κ°€λœ λͺ¨μŠ΅μž…λ‹ˆλ‹€. λ‘œλ“œλ°ΈλŸ°μ„œ 뒀에 μΆ”κ°€λœ μƒˆλ‘œμš΄ μ„œλ²„μ˜ λ©”λͺ¨λ¦¬μ—λŠ” xyz μ„Έμ…˜μ΄ μ—†μ–΄μ„œ μΈμ¦ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€νŒ¨ν•©λ‹ˆλ‹€. 즉 μ„Έμ…˜μ„ μ΄μš©ν•  μ‹œμ—λŠ” 처음 λ‘œκ·ΈμΈν•œ μ„œλ²„μ—μ„œλ§Œ μš”μ²­μ„ 받을 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 외에도 λ°μ΄ν„°λ² μ΄μŠ€λ‚˜ λ©”λͺ¨λ¦¬μ— μ €μž₯λ˜λŠ” μ„Έμ…˜μ„ μ‚¬μš©ν•˜λŠ” μ‚¬μš©μžκ°€ λ§Žμ•„ 질수둝 λ©”λͺ¨λ¦¬μ™€ 데이터 λ² μ΄μŠ€μ— μ£ΌλŠ” 무리, CORS(쿠킀관리)λ“±μ˜ 문제점이 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ λ°©λ²•μœΌλ‘œ 3가지 방법을 μ œμ‹œν•©λ‹ˆλ‹€.
μ²«λ²ˆμ§ΈλŠ” μ„œλ²„ κ°„ μ„Έμ…˜ λ™κΈ°ν™”μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ κ΅¬ν˜„μ΄ κΉŒλ‹€λ‘­κ³  였λ₯˜κ°€ λ°œμƒν•˜κΈ° μ‰½μŠ΅λ‹ˆλ‹€.
λ‘λ²ˆμ§ΈλŠ” μ™ΈλΆ€ 인메λͺ¨λ¦¬ DBμ‚¬μš©μž…λ‹ˆλ‹€. 쒋은 μ†”λ£¨μ…˜μ΄μ§€λ§Œ λ‹€λ₯Έ 인프라 κ΅¬μ„±μš”μ†Œκ°€ μΆ”κ°€λ©λ‹ˆλ‹€. 인메λͺ¨λ¦¬κ°€ κΆκΈˆν•˜μ‹œλ‹€λ©΄ μ•„λž˜μ˜ 3.링크 λ₯Ό μ½μ–΄λ³΄μ‹œλ©΄ 도움이 될 것 κ°™μŠ΅λ‹ˆλ‹€.
μ„Έλ²ˆμ§ΈλŠ” HTTP의 Stateless νŠΉμ„±μ„ μˆ˜μš©ν•˜κ³  더 λ‚˜μ€ μ†”λ£¨μ…˜μ„ μ°ΎλŠ” 것 μž…λ‹ˆλ‹€. 더 λ‚˜μ€ μ†”λ£¨μ…˜μœΌλ‘œ μ†Œκ°œλ˜λŠ” 것이 λ°”λ‘œ JWTμž…λ‹ˆλ‹€. JWTλŠ” λ‹€μŒκΈ€μ—μ„œ μžμ„Έν•˜κ²Œ μ„€λͺ…λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.


참고 링크
1. λͺ¨λ˜ μ›Ήμ—μ„œ JWT
2. λ‘œλ“œλ°ΈλŸ°μ„œ
3. in-memory

profile
μ§ˆλ¬Έμ΄λ‚˜ 의견이 μžˆμœΌμ‹œλ©΄ λ‚¨κ²¨μ£Όμ„Έμš”. μ„œλ‘œμ˜ λ°œμ „μ΄λΌκ³  μƒκ°ν•©λ‹ˆλ‹€.

0개의 λŒ“κΈ€