WEB

[WEB] HTTP 인증방식1_μ„Έμ…˜/μΏ ν‚€

mangdo 2021. 6. 11. 17:39

🌱 인증?

  인증(Authentication)μ΄λž€, μ‚¬μš©μžκ°€ μžκΈ°μžμ‹ μ„ 증λͺ…ν•˜λŠ” μΌμž…λ‹ˆλ‹€.

μ‚¬μš©μž A와 Bκ°€ ν•˜λ‚˜μ˜ μ›Ήμ‚¬μ΄νŠΈλ₯Ό μ‚¬μš©ν•œλ‹€λΌκ³  κ°€μ •ν•΄λ΄…μ‹œλ‹€. 두 μ‚¬μš©μžκ°€ κ°€μ§€κ³ μžˆλŠ” νšŒμ›μ •λ³΄μ™€ μ»¨ν…μΈ λŠ” 각각 λ‹€λ₯Ό 것이닀. λ”°λΌμ„œ μ„œλ²„μ—μ„œλŠ” A, Bκ°€ μš”μ²­μ„ λ³΄λƒˆμ„ λ•Œ λˆ„κ΅¬μ˜ μš”μ²­μΈμ§€λ₯Ό ꡬ뢄해내야 ν•©λ‹ˆλ‹€. κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ B의 λ―Όκ°ν•œ κ°œμΈμ •λ³΄κ°€ Aμ—κ²Œ λ³΄μ—¬μ§€λŠ” 일이 λ°œμƒν•  수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. κ·Έλž˜μ„œ λΈŒλΌμš°μ €μ—μ„œλŠ” μžμ‹ μ΄ λˆ„κ΅¬μΈμ§€λ₯Ό 증λͺ…ν•   수 μžˆλŠ” 정보λ₯Ό μ„œλ²„μ— λ³΄λ‚΄μ•Όν•˜λ©°, μ„œλ²„λŠ” κ·Έ λ‹¨μ„œλ₯Ό λ°”νƒ•μœΌλ‘œ μ‚¬μš©μžμ—κ²Œ λ§žλŠ” 데이터λ₯Ό 보내주어야 ν•©λ‹ˆλ‹€.

 

🌱 HTTP와 인증

  ν˜„μž¬ μ›Ήμ—μ„œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” 톡신방식은 HTTP ν†΅μ‹ μž…λ‹ˆλ‹€. HTTP ν†΅μ‹ μ˜ κ°€μž₯ 큰 νŠΉμ§• μ€‘μ—λŠ” λΉ„μ—°κ²°μ„±(connectionless)와 λ¬΄μƒνƒœ(stateless)κ°€ μžˆμŠ΅λ‹ˆλ‹€. λΉ„μ—°κ²°μ„±μ΄λž€ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ ν•œλ²ˆ 연결을 맺은 ν›„, ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ— λŒ€ν•΄ μ„œλ²„κ°€ 응닡을 마치면 λ§Ίμ—ˆλ˜ 연결을 λŠμ–΄λ²„λ¦¬λŠ” μ„±μ§ˆμž…λ‹ˆλ‹€. λ§Œμ•½ μ„œλ²„μ—μ„œ λ‹€μˆ˜μ˜ ν΄λΌμ΄μ–ΈνŠΈμ™€ 연결을 계속 μœ μ§€ν•΄μ•Ό ν•œλ‹€λ©΄, 연결을 μœ μ§€ν•˜κΈ° μœ„ν•œ λ§Žμ€ μžμ›λ“€μ΄ 낭비될 수 μžˆκΈ°λ•Œλ¬Έμ— ν•œλ²ˆ 맺은 연결을 λŠμ–΄λ²„λ¦¬κ²Œ λ©λ‹ˆλ‹€.

  λ¬΄μƒνƒœλž€ μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό μ•Œ 수 μ—†λ‹€λŠ” μ„±μ§ˆμž…λ‹ˆλ‹€. HTTPλŠ” 연결이 μœ μ§€λ˜μ§€ μ•Šκ³  λŠμ–΄μ§€λŠ” λΉ„μ—°κ²°μ„±μ΄λΌλŠ” νŠΉμ§• λ•Œλ¬Έμ— 과거에 λŒ€ν•œ 정보λ₯Ό μœ μ§€ν•  수 μ—†μŠ΅λ‹ˆλ‹€. ν˜„μž¬ μš”μ²­μ„ 보낸 ν΄λΌμ΄μ–ΈνŠΈκ°€ 인증을 ν–ˆλ˜ μ‚¬μš©μžμΈμ§€, μ•„λ‹Œμ§€ κΈ°μ–΅ν•  수 μ—†κΈ°λ•Œλ¬Έμ— HTTP μš”μ²­λ§ˆλ‹€ 인증정보λ₯Ό ν•¨κ»˜ λ³΄λ‚΄μ•Όν•©λ‹ˆλ‹€.

 HTTP 인증 λ°©μ‹μ—λŠ” λŒ€ν‘œμ μœΌλ‘œ μΏ ν‚€/μ„Έμ…˜ 방식과 토큰 방식이 μžˆμŠ΅λ‹ˆλ‹€. λ‹€μ‹œ 토큰을 μ΄μš©ν•˜λŠ” λŒ€ν‘œμ μΈ λ°©λ²•μ—λŠ” JWT와 OAuthκ°€ μžˆμŠ΅λ‹ˆλ‹€. 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” μΏ ν‚€/μ„Έμ…˜μ„ μ΄μš©ν•œ 방식에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄λ €κ³  ν•©λ‹ˆλ‹€. 

 

🌱 μΏ ν‚€ VS μ„Έμ…˜

  μΏ ν‚€λž€ μ‚¬μ΄νŠΈλ₯Ό λ°©λ¬Έν•˜κ³  μ΄μš©ν• λ•Œ λΈŒλΌμš°μ €μ— μ €μž₯λ˜λŠ” λ‚΄μš©μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ μΏ ν‚€λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‘°μž‘ν•  수 있고, 심지어 남이 ν›”μΉ˜κ±°λ‚˜ λ„λ‘‘μ§ˆν•˜κΈ° μ‰¬μ›Œ λ³΄μ•ˆμ— μ·¨μ•½ν•˜λ‹€λŠ” ν•œκ³„κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이와 λ°˜λŒ€λ‘œ μ„Έμ…˜μ€ λΈŒλΌμš°μ €κ°€ μ•„λ‹Œ μ„œλ²„λ‹¨μ—μ„œ μ‚¬μš©μž 정보λ₯Ό μ €μž₯ν•˜λŠ” κ΅¬μ‘°μž…λ‹ˆλ‹€. μ„œλ²„κ°€ 직접 μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— 쿠킀보닀 μ•ˆμ „ν•˜μ§€λ§Œ, μ„Έμ…˜μ„ λ‚¨λ°œν•˜κ²Œλ˜λ©΄ μ„œλ²„μ— λΆ€ν•˜κ°€ 올 수 μžˆμŠ΅λ‹ˆλ‹€. λ•Œλ¬Έμ— μΏ ν‚€λ‘œ λ…ΈμΆœν•˜λ©΄ μ•ˆλ˜λŠ” λ―Όκ°ν•œ μ •λ³΄λ§Œ μ„Έμ…˜μ— μ €μž₯ν•˜λ©°, 쿠킀와 μ„Έμ…˜μ„ 적절히 μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

🌱 μ„Έμ…˜/μΏ ν‚€ 방식

[ 흐름 ]

1. μ‚¬μš©μž 둜그인

2. νšŒμ›μ΄ λ§žλŠ”μ§€ νšŒμ›DBμ—μ„œ 확인

3. νšŒμ›μ΄ λ§žλ‹€λ©΄, μ‚¬μš©μžμ˜ κ³ μœ ν•œ ID값을 λΆ€μ—¬ν•˜κ³  μ„Έμ…˜ ID와 λ§€ν•‘ν•˜μ—¬ μ„Έμ…˜ μ €μž₯μ†Œμ— μ €μž₯

4. μ„œλ²„λŠ” λΈŒλΌμš°μ €μ—κ²Œ 둜그인 μš”μ²­μ— λŒ€ν•œ 응닡과 ν•¨κ»˜ μ„Έμ…˜IDλ₯Ό 전솑

5. λΈŒλΌμš°μ €λŠ” 받은 μ„Έμ…˜IDλ₯Ό 쿠킀에 μ €μž₯

6. λΈŒλΌμš°μ €κ°€ 데이터 μš”μ²­κ³Ό ν•¨κ»˜ μΏ ν‚€(μ„Έμ…˜ID)λ₯Ό μ„œλ²„λ‘œ 전솑

7. μ„œλ²„λŠ” 받은 μΏ ν‚€(μ„Έμ…˜ID)λ₯Ό 검증

8. μ„œλ²„λŠ” μ„Έμ…˜ID와 λŒ€μ‘λ˜λŠ” μœ μ € 정보(μ„Έμ…˜)λ₯Ό νšλ“

🌱 μ„Έμ…˜/μΏ ν‚€ 방식 νŠΉμ§•κ³Ό μž₯단점

[ νŠΉμ§• ]

1. μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ˜ μ„Έμ…˜μ •λ³΄λ₯Ό DB에 μ €μž₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.(λ³„λ„μ˜ μ„Έμ…˜μ €μž₯μ†Œ)

2. μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ˜ μƒνƒœλ₯Ό μ„œλ²„μ—μ„œ 계속 μœ μ§€ν•˜κ³  이 정보λ₯Ό μ„œλΉ„μŠ€μ— μ΄μš©ν•˜λŠ” Stateful μ„œλ²„μž…λ‹ˆλ‹€.

 

[ μž₯점 ]

1. μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœλ₯Ό μœ μ§€ν•˜κ³  μžˆμœΌλ―€λ‘œ μ‚¬μš©μžμ˜ μƒνƒœλ₯Ό 직접 관리할 수 μžˆμŠ΅λ‹ˆλ‹€.

(ex. κ°•μ œ λ‘œκ·Έμ•„μ›ƒ, μ‚¬μš©μžμ˜ 둜인 μ—¬λΆ€ 확인) 

2. ν΄λΌμ΄μ–ΈνŠΈκ°€ μž„μ˜λ‘œ 정보λ₯Ό λ³€κ²½μ‹œμΌœλ„ μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈ μƒνƒœ 정보λ₯Ό κ°€μ§€κ³  μžˆμ–΄ μƒλŒ€μ μœΌλ‘œ μ•ˆμ „ν•©λ‹ˆλ‹€.

 

[ 단점 ]

1. μ„œλ²„μ—μ„œ 좔가적인 μ„Έμ…˜ μ €μž₯μ†Œλ₯Ό μ‚¬μš©ν•˜κΈ°λ•Œλ¬Έμ— DB의 λΆ€ν•˜κ°€ μ‹¬ν•΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

2. μ„Έμ…˜ ν•˜μ΄μ œν‚Ή 곡격에 μ·¨μ•½ν•©λ‹ˆλ‹€. 

: μ„Έμ…˜ ν•˜μ΄μ œν‚Ήμ΄λž€ κ³΅κ²©μžκ°€ μ‚¬μš©μžA의 HTTPμš”μ²­μ„ 훔쳐 μΏ ν‚€(μ„Έμ…˜ ID)λ₯Ό μ–»μ–΄λ‚΄κ³  κ³΅κ²©μžκ°€ μ–»μ–΄λ‚Έ μΏ ν‚€(μ„Έμ…˜ ID)둜 μš”μ²­μ„ 보내면 μ„œλ²„μ—μ„œλŠ” μ‚¬μš©μžA둜 μ°©κ°ν•˜κ²Œλ˜λŠ” 것을 μ΄μš©ν•œ κ³΅κ²©μž…λ‹ˆλ‹€.

3. μ„œλ²„μ˜ ν™•μž₯성이 μ–΄λ €μ›Œμ§‘λ‹ˆλ‹€.

 : μ„œλ²„μ˜ ν™•μž₯μ΄λž€, λ” λ§Žμ€ νŠΈλž˜ν”½μ„ κ°λ‹Ήν•˜κΈ° μœ„ν•˜μ—¬ μ—¬λŸ¬κ°œμ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό λŒλ¦¬κ±°λ‚˜ μ—¬λŸ¬λŒ€μ˜ μ„œλ²„ 컴퓨터λ₯Ό μΆ”κ°€ ν•˜λŠ”κ²ƒμ„ μ˜λ―Έν•©λ‹ˆλ‹€.

🌱 μ„Έμ…˜/μΏ ν‚€ 방식 μ‹€μ œ μ˜ˆμ‹œ

μ‹€μ œ μ œκ°€ μ„Έμ…˜/μΏ ν‚€ 방식을 μ‚¬μš©ν•˜μ—¬ κ°œλ°œν–ˆμ—ˆλ˜ μŠ€ν”„λ§ μ‹œνλ¦¬ν‹°λ₯Ό μ΄μš©ν•œ ν”„λ‘œμ νŠΈλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 

[ λΈŒλΌμš°μ €μ˜ μΏ ν‚€ ]

λ‘œκ·ΈμΈμ„ ν•˜κ²Œλ˜λ©΄, λΈŒλΌμš°μ €μ˜ 쿠킀에 μ„Έμ…˜IDκ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€.

λ§Œμ•½ ν•΄λ‹Ή μΏ ν‚€λ₯Ό μ‚­μ œν•˜κ²Œλ˜λ©΄ λ‘œκ·Έμ•„μ›ƒμ΄ λ©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μΏ ν‚€λ₯Ό μ‚­μ œν•œλ‹€κ³  μ„Έμ…˜ μ €μž₯μ†Œμ˜ 값이 μ‚¬λΌμ§€μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

μΏ ν‚€ μ•ˆμ— μ„Έμ…˜ID

[ μ„œλ²„μ˜ μ„Έμ…˜ μ €μž₯μ†Œ ]

spring_session ν…Œμ΄λΈ”μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

λ§Œμ•½ μ„Έμ…˜ μ €μž₯μ†Œμ˜ ν•΄λ‹Ή μœ μ €μ˜ 데이터λ₯Ό μ‚­μ œν•˜κ²Œ 되면 κ°•μ œ λ‘œκ·Έμ•„μ›ƒμ΄λ©λ‹ˆλ‹€.

spring_session_attributesν…Œμ΄λΈ”μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

 

μ‹€μ œ κ΅¬ν˜„ν•  λ•Œ, μ„Έμ…˜ μ €μž₯μ†Œμ˜ 방식도 μ—¬λŸ¬ μ’…λ₯˜κ°€ μžˆλŠ”λ° λ‹€μŒ ν¬μŠ€νŒ…μ„ ν™•μΈν•˜λ©΄ 쒋을 것같닀.

2021.04.11 - [spring] - [Spring Boot] μ„Έμ…˜μ €μž₯μ†Œ

 

[Spring Boot] μ„Έμ…˜μ €μž₯μ†Œ

μ„Έμ…˜μ €μž₯μ†Œμ— λŒ€ν•΄ 3가지방법 쀑 ν•˜λ‚˜λ₯Ό 선택할 수 μžˆλ‹€. 1. ν†°μΊ£ μ„Έμ…˜ μ‚¬μš©ν•˜κΈ° : λ””ν΄νŠΈλ‘œ μ„ νƒλ˜λŠ” 방식 λ‚΄μž₯ ν†°μΊ£(WAS)에 μ„Έμ…˜μ„ μ €μž₯ν•˜κ²Œ 되면 μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ‹€ν–‰μ‹œ 항상 μ΄ˆκΈ°ν™”κ°€λœλ‹€. 또 2

doing7.tistory.com



 

 

 

 

좜처 : 

유튜브 μ˜μƒ - μΏ ν‚€, μ„Έμ…˜, μΊμ‹œκ°€ λ­”κ°€μš”?

유튜브 μ˜μƒ -Session vs Token authentication in 100 seconds

 

λΈ”λ‘œκ·Έ ν¬μŠ€νŒ… - HTTP νŠΉμ„±

λΈ”λ‘œκ·Έ ν¬μŠ€νŒ… - μ„Έμ…˜/μΏ ν‚€, 토큰방식

λΈ”λ‘œκ·Έ ν¬μŠ€νŒ… - μ‰½κ²Œ μ•Œμ•„λ³΄λŠ” μ„œλ²„ 인증 1편 ( μ„Έμ…˜/μΏ ν‚€, JWT )