Study/cs (computer science)

μΏ ν‚€ 2λΆ€ : μ„Έμ…˜μ€ μΏ ν‚€κ°€ ν•„μš”ν•˜λ‹€

κ°œλ°œν•˜λŠ” 주디씨 2023. 11. 30. 11:51

 

μ‚¬μš©μž 인증을 ν•  λ•Œ, μΏ ν‚€λ₯Ό μ‚¬μš©ν•˜λ©΄ μœ„ν—˜ν•΄μš”.
μ„œλ²„μ— 데이터λ₯Ό μ €μž₯ν•  λ•ŒλŠ” μ„Έμ…˜μœΌλ‘œ ν•˜λŠ” 것이 μ•ˆμ „ν•©λ‹ˆλ‹€.

 

μ‹€λ¬΄μ—μ„œ 둜그인 및 νšŒμ›κ°€μž…μ€ κ°€μž₯ μ‹œμž‘μ΄μž 기본이 λ˜λ©΄μ„œ μ€‘μš”ν•œ 역할을 ν•œλ‹€κ³  λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έ κ°€μš΄λ° μ‚¬μš©μž 인증은 μ„œλΉ„μŠ€μ—μ„œ κ°€μž₯ μ€‘μš”ν•˜λ‹€κ³  ν•  수 μžˆλŠ”λ°μš”!! μœ„ 말은 λ§žλŠ” λ§μΌκΉŒμš”?

 

λ§Žμ€ μ‚¬λžŒλ“€μ΄ 쿠킀와 μ„Έμ…˜μ„ μ„œλ‘œ λŒ€λ¦½ν•˜κ±°λ‚˜ μ„Έμ…˜μ΄ μΏ ν‚€λ₯Ό λŒ€μ‹ ν•˜λŠ” 기술둜 μ˜€ν•΄ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€γ… γ… μ΄λ²ˆ ν¬μŠ€νŒ…μ€ 쿠킀와 μ„Έμ…˜μ— λŒ€ν•œ μ˜€ν•΄λ₯Ό ν’€κ³  μΏ ν‚€λ₯Ό μ‚¬μš©ν•  수 밖에 μ—†λŠ” μ΄μœ μ™€ μ„Έμ…˜μ„ ν†΅ν•œ μ‚¬μš©μž 인증은 μ–΄λ–»κ²Œ ν•˜λŠ”μ§€ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€!!

 

 

(μ§€λ‚œ λ‚΄μš©κ³Ό μ΄μ–΄μ§€λŠ” λ‚΄μš©μ΄λ‹ˆ 아직 λͺ»λ³΄μ…¨λ‹€λ©΄ λ‹€λ…€μ˜€μ„Έμš”πŸ˜†)

https://printf-hellojudyworld.tistory.com/84#comment15268315

 

μΏ ν‚€ 1λΆ€ : HTTP둜 μ„€λͺ…ν•˜λŠ” μΏ ν‚€

μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈμ— μ €μž₯되고… 음.. λ³΄μ•ˆμ— 쒋지 μ•ŠμŠ΅λ‹ˆλ‹€. - 그럼 λ³΄μ•ˆμ„ μœ„ν•΄μ„œ μΏ ν‚€λŠ” μ•ˆ μ“°λŠ” 게 μ’‹κ² λ„€μš”? μΏ ν‚€κ°€ μ–΄λ–»κ²Œ μ„œλ²„μ™€ λΈŒλΌμš°μ € 간에 이동을 ν•˜λŠ”μ§€, 그리고 μΏ ν‚€μ˜ 유효 κΈ°κ°„

printf-hellojudyworld.tistory.com

 

μΏ ν‚€(Cookie)와 μ„Έμ…˜(Session)은 μƒν˜Έλ³΄μ™„ν•˜λŠ” 기술

쿠킀와 μ„Έμ…˜μ„ 잘 μ΄ν•΄ν•˜κΈ° μœ„ν•΄μ„œλŠ” μš°μ„  웹에 λŒ€ν•΄ μ•Œμ•„μ•Όν•©λ‹ˆλ‹€. 웹에 λŒ€ν•΄ μƒκ°ν•΄λ³ΌκΉŒμš”? 웹은 HTTP ν”„λ‘œν† μ½œλ‘œ ν†΅μ‹ ν•˜κ³  κ·Έ νŠΉμ§•μ„ μƒκ°ν•˜μžλ©΄ 무연결(Connectionless)κ³Ό λ¬΄μƒνƒœ(Stateless) λΌλŠ” 것을 μ΄ν•΄ν•΄μ•Όν•©λ‹ˆλ‹€. μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— 응닡을 ν•˜λŠ” μˆœκ°„ HTTP 톡신을 μ’…λ£Œν•˜κ²Œ 되며, ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μƒˆλ‘œμš΄ μš”μ²­ μ‹œμ— HTTP 연결이 λ§Ίμ–΄μ§‘λ‹ˆλ‹€.

λ¬Όλ‘  μ‚¬μš©μž μž…μž₯μ—μ„œλŠ” λΈŒλΌμš°μ €λ§Œ 보고 있기 λ•Œλ¬Έμ— μ„œλ²„μ™€ 연결이 λŠμ–΄μ‘Œλ‹€λŠ” 것을 체감할 순 μ—†μ§€λ§Œ, λ¬Έμ œλŠ” ν”„λ‘œκ·Έλž¨μ˜ κ΄€μ μ—μ„œ 생각해보면 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ΅¬ν˜„ν•˜λŠ”λ° 큰 걸림돌이 λ©λ‹ˆλ‹€. μ„œλΉ„μŠ€λŠ” μ—¬λŸ¬ νŽ˜μ΄μ§€μ— 걸쳐 ν•˜λ‚˜μ˜ νλ¦„μœΌλ‘œ 이어져야 ν•˜λŠ”λ° μ΄λŸ¬ν•œ 무연결성이 μ„œλΉ„μŠ€λ₯Ό κ΅¬ν˜„ν•˜κΈ° μ–΄λ ΅κ²Œ ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ 연결이 μœ μ§€λ˜μ§€ μ•ŠλŠ” μƒν™©μ—μ„œ μ„œλ²„λ‘œ λ§Žμ€ μš”μ²­μ΄ 듀어왔을 λ•Œ 이 ν΄λΌμ΄μ–ΈνŠΈκ°€ 처음 μš”μ²­ν•œ 것인지 이전에 μš”μ²­ν–ˆλ˜ 것을 μž¬μš”μ²­ν•œ 것인지 μ•Œ 수 μ—†λŠ” 일이기 λ•Œλ¬Έμ— μ„œλ²„λŠ” 처음처럼 계속 μš”μ²­μ„ μ²˜λ¦¬ν•΄μ€„ 수 밖에 μ—†μŠ΅λ‹ˆλ‹€.

 

μ΄λ ‡κ²Œ 되면 λ‚­λΉ„κ°€ 되고, νž˜λ“€μ–΄μ§€κ² μ£ ?

 

 

μ—¬κΈ°μ„œ μΏ ν‚€πŸͺ(Cookie)의 지속성이 빛을 λ°œνœ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€βœ¨

μ„œλ²„κ°€ μΏ ν‚€λ₯Ό ν•œ 번 λΈŒλΌμš°μ €μ— μ €μž₯ν•˜λ©΄ λΈŒλΌμš°μ €λŠ” μΏ ν‚€λ₯Ό 맀 μš”μ²­λ§ˆλ‹€ μ„œλ²„λ‘œ 전달할 수 있게 λ©λ‹ˆλ‹€. μΏ ν‚€λ₯Ό 톡해 데이터가 지속될 수 μžˆλ„λ‘ ν•  수 μžˆλŠ” 것이죠!! μ΄λŸ¬ν•œ μΏ ν‚€μ˜ νŠΉμ„±μ€ λ‹¨μˆœνžˆ μ§€μ†μ„±μ—μ„œ κ·ΈμΉ˜μ§€ μ•Šκ³  νŠΈλž˜ν”½ 뢄산도 ν•  수 μžˆμŠ΅λ‹ˆλ‹€ :)

 

νŠΈλž˜ν”½ λΆ„μ‚°(Load Balancing)을 μœ„ν•œ μΏ ν‚€ν™œμš©λ²•

νŠΈλž˜ν”½ λΆ„μ‚°.. 별거 μ—†μ–΄μš”. μ’€ μžˆμ–΄λ³΄μ΄λŠ” 말둜 μ„€λͺ…ν•˜λ©΄ 이게 λ‘œλ“œλ°ΈλŸ°μ‹±μ΄λž€ κ²ƒμ΄μ£ γ…Ž.γ…Ž

수 λ§Žμ€ μ‚¬μš©μžλ‘œλΆ€ν„° λ™μ‹œμ— λ“€μ–΄μ˜€λŠ” μš”μ²­μ„ μ²˜λ¦¬ν•˜λ €λ©΄ 일반적으둜 μ—¬λŸ¬ λŒ€μ˜ μ„œλ²„λ₯Ό μš΄μ˜ν•˜μ—¬ λΆ„μ‚°μ‹œν‚€λŠ” 방법을 μ‚¬μš©ν•˜κ²Œ λ©λ‹ˆλ‹€. μ„œλ²„ μ•ž 단에 λ‘œλ“œ λ°ΈλŸ°μ„œ(Load Balancer)λ₯Ό 두고 λΆ€ν•˜κ°€ μ—¬λŸ¬ λŒ€μ˜ μ„œλ²„λ‘œ 뢄산될 수 μžˆλ„λ‘ 인프라λ₯Ό κ΅¬μ„±ν•˜λŠ” 이유이죠.

 

그런데, 이런 ν™˜κ²½μ—μ„œ λ‘œλ“œλ°ΈλŸ°μ„œκ°€ μš”μ²­μ„ 순차적(λΌμš΄λ“œλ‘œλΉˆ)으둜 ν˜Ήμ€ λžœλ€ν•˜κ²Œ μ„œλ²„μ— λ°°μ •ν•˜κ²Œ λœλ‹€λ©΄ μ–΄λ–¨κΉŒμš”?

Aμ„œλ²„μ—μ„œ 둜그인 λ˜μ–΄ μ„Έμ…˜μ„ 가진 μ‚¬μš©μžκ°€, λ‹€μŒ μš”μ²­ λ•Œ B번 μ„œλ²„μ— μš”μ²­ν•˜κ²Œ λœλ‹€λ©΄ 이 μ‚¬μš©μžλŠ” 둜그인이 λ˜μ—ˆμ„κΉŒμš”? μ•„λ‹™λ‹ˆλ‹€βŒ Bμ„œλ²„μ—λŠ” ν•΄λ‹Ή μ‚¬μš©μžμ˜ μ„Έμ…˜μ •λ³΄κ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 둜그인 된 μ‚¬μš©μžλΌκ³  μΈμ§€ν•˜μ§€ λͺ»ν•  κ²λ‹ˆλ‹€. μ΄λ ‡κ²Œλ˜λ©΄.. μ„œλ²„λ§ˆλ‹€ μž¬λ‘œκ·ΈμΈμ„ μ„Έμ…˜μ„ μœ μ§€ν•˜μ§€ λͺ»ν•˜κ³  계~속 처리λ₯Ό ν•΄μ•Όν•˜λŠ” μ΄μŠˆκ°€ λ°œμƒν•  κ²ƒμž…λ‹ˆλ‹€.

 

이런 경우 μΏ ν‚€λ₯Ό ν™œμš©ν•˜λ©΄ μ‚¬μš©μžλ₯Ό κ³ λ €ν•  수 μžˆμœΌλ‹ˆ μ–΄λ–€ 방법인지 μ•Œμ•„λ΄…μ‹œλ‹€.

μ‚¬μš©μžκ°€ μ„œλΉ„μŠ€μ— 졜초 μ ‘μ†ν–ˆμ„ λ•Œ κ·Έ μš”μ²­μ„ μ²˜λ¦¬ν•œ μ„œλ²„κ°€ μžμ‹ μ˜ μ‹λ³„μžλ₯Ό μΏ ν‚€λ‘œ μ§€μ •ν•˜λΌκ³  λΈŒλΌμš°μ €μ— μ „λ‹¬ν•˜λ©΄, ν•΄λ‹Ή λΈŒλΌμš°μ €λŠ” μ‚¬μš©μžκ°€ ν•΄λ‹Ή μ‚¬μ΄νŠΈμ˜ μ–΄λŠ νŽ˜μ΄μ§€μ— λ°©λ¬Έν•˜λ˜ κ·Έ μ €μž₯된 μΏ ν‚€λ₯Ό λŒλ €λ³΄λ‚΄κ²Œ λ©λ‹ˆλ‹€. 그럼 λ‘œλ“œ λ°ΈλŸ°μ„œλŠ” μ„œλ²„ μ‹λ³„μžλ₯Ό 보고 이 λΈŒλΌμš°μ €μ—μ„œ μ˜€λŠ” μš”μ²­μ„ μ‹λ³„μžμ— ν•΄λ‹Ήν•˜λŠ” μ„œλ²„λ‘œ 보내쀄 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ 되면, μΏ ν‚€λ₯Ό 톡해 μ–΄λ–€ μ„œλ²„μ—μ„œ 인증된 μ„Έμ…˜μΈμ§€λ₯Ό μ•Œκ³  ν•΄λ‹Ή μ„Έμ…˜μ΄ μžˆλŠ” μ„œλ²„μ— μ ‘κ·Όν•˜μ—¬ λ‘œκ·ΈμΈμ„ μ‹œλ„ν–ˆλ˜ μ‚¬μš©μžμΈμ§€ 확인할 수 있게 λ©λ‹ˆλ‹€πŸ˜†

 

μ„Έμ…˜κΈ°λ°˜ μ‚¬μš©μž 인증

μ΄λ ‡κ²Œλ§Œ 보면 μΏ ν‚€κ°€ μž₯점밖에 μ—†λŠ” 것 같을 수 μžˆμ§€λ§Œ, 사싀 μΏ ν‚€λŠ” λΈŒλΌμš°μ €μ— μ €μž₯λœλ‹€λŠ” μ΅œλŒ€ 단점을 가지고 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 이 문제λ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•΄ μ„œλ²„ μΈ‘μ—μ„œ κ΄€λ¦¬ν•˜λŠ” μ„Έμ…˜μ„ ν™œμš©ν•΄λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€. (μ„Έμ…˜κ³Ό μΏ ν‚€λŠ” μ—„μ—°νžˆ μž₯단점과 차이가 있으며 뭐가 맞고 틀리닀고 말할 수 μ—†μŠ΅λ‹ˆλ‹€. μ μž¬μ μ†Œμ— 맞게 잘 ν™œμš©ν•˜λŠ” 것이 BESTλΌλŠ” 것을 μžŠμ§€λ§ˆμ„Έμš”!!)

잘λͺ»λœ μ‹œλ‚˜λ¦¬μ˜€λ₯Ό λ¨Όμ € 생각해보면 μ‚¬μš©μž ID, PWλ₯Ό λΈŒλΌμš°μ € 쿠킀에 λ‹΄μ•„ μš”μ²­μ΄ μžˆμ„ λ•Œλ§ˆλ‹€ μ„œλ²„μ— μ „λ‹¬ν•˜λŠ” 방법을 생각할 수 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, 이 방법은 1차적으둜 해결이 될 μˆ˜λŠ” μžˆμœΌλ‚˜ λ³΄μ•ˆλ¬Έμ œλŠ” λ¬Όλ‘  μ„œλ²„λŠ” λ‹¨μˆœνžˆ DBμ—μ„œ ν•΄λ‹Ή μ‚¬μš©μžμ˜ μ„Έμ…˜μ„ κ²€μƒ‰ν•˜λŠ” μ—­ν• λ§Œ ν•˜κ²Œ λ©λ‹ˆλ‹€...

 

μ•ˆμ „ν•˜κ²Œ μ‚¬μš©μžμ˜ μƒνƒœλ₯Ό μœ μ§€ν•˜λŠ” 방법은 μ–΄λ–€κ²Œ μžˆμ„κΉŒμš”? μ‚¬μš©μžκ°€ μž…λ ₯ν•œ 인증 정보λ₯Ό μ„Έμ…˜μœΌλ‘œ μ €μž₯ν•œ λ’€ 이λ₯Ό ν™œμš©ν•˜λ©΄ λ©λ‹ˆλ‹€!

μ‚¬μš©μžκ°€ λΈŒλΌμš°μ €μ—μ„œ 둜그인 νŽ˜μ΄μ§€λ₯Ό μ—΄κ³  인증정보λ₯Ό μš”μ²­ν•˜λ©΄ μ„œλ²„λŠ” μ‚¬μš©μžDBλ₯Ό 쑰회 ν›„ 인증정보λ₯Ό κ²€μ¦ν•˜μ—¬ μ„œλ²„μ— μ„Έμ…˜μ„ μƒμ„±ν•΄μ€λ‹ˆλ‹€. κ·Έ ν›„ μ„œλ²„μ˜ μ„Έμ…˜μ„ 식별할 수 μžˆλŠ” μ‹λ³„μž = μ„Έμ…˜ID λ₯Ό μΏ ν‚€λ‘œ λΈŒλΌμš°μ €μ— 응닡을 ν•΄μ£Όλ©΄ λΈŒλΌμš°μ €λŠ” 맀번 μš”μ²­μ„ 보낼 λ•Œ 이 μ„Έμ…˜ 아이디가 λ‹΄κΈ΄ μΏ ν‚€λ₯Ό μ„œλ²„μ— 전달할 수 있게 λ©λ‹ˆλ‹€.

μ„œλ²„λŠ” 이 μ„Έμ…˜ 아이디에 ν•΄λ‹Ήν•˜λŠ” μ„Έμ…˜μ΄ μ‘΄μž¬ν•˜λŠ”μ§€λ§Œ 확인해주면 훨씬 더 κ°„λ‹¨ν•˜κ³  λ‹¨μˆœν•˜μ§€λ§Œ μ‹€μ œ μΈμ¦μ •λ³΄λŠ” μˆ¨κ²¨μ§„ μ±„λ‘œ 둜그인 인증을 μ²˜λ¦¬ν•  수 있게 λ©λ‹ˆλ‹€.

 

마치며

μ•„λŠ” 만큼 보이고, μ•„λŠ” 만큼 잘 ν™œμš©ν•  수 μžˆλ‹€λŠ” 말은 μ–΄λ””μ—λ‚˜ 곡톡인 것 κ°™μŠ΅λ‹ˆλ‹€βœ¨ν¬μŠ€νŒ…μ—μ„œλŠ” λΈŒλΌμš°μ €κ°€ μΏ ν‚€λ₯Ό μ§€μ†μ μœΌλ‘œ μ„œλ²„λ‘œ 보낼 수 μžˆλ‹€λŠ” νŠΉμ„±μ„ ν™œμš©ν–ˆμ§€λ§Œ 이 밖에도 μΏ ν‚€λŠ” λ§Žμ€ μ—­ν• κ³Ό 단점 λ˜ν•œ μ‘΄μž¬ν•©λ‹ˆλ‹€. λ”°λΌμ„œ 쿠킀와 μ„Έμ…˜μ„ ν™œμš©ν•˜λ €κ³  ν•œλ‹€λ©΄ 관심을 κ°–κ³  더 깊이 κ³΅λΆ€ν•΄λ³΄μ‹œλŠ” 것을 μΆ”μ²œν•©λ‹ˆλ‹€ :) λ§‰μ—°ν•˜κ²Œ 쿠킀와 μ„Έμ…˜μ— λŒ€ν•΄ μƒκ°ν–ˆλ˜ λ‚΄μš©μ„ μ •λ¦¬ν•˜κ³ μž 적어 λ³Έ λ‚΄μš©μ΄λ‹ˆ ν‹€λ¦° λ‚΄μš©μ΄λ‚˜ λ‹€λ₯Έ λ‚΄μš©μ΄ μžˆλ‹€λ©΄ μ–Έμ œλ“  λŒ“κΈ€ λ‚¨κ²¨μ£Όμ„Έμš”!! 

 

끝.