J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

[๋„คํŠธ์›Œํฌ] ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ(+JWT), ์„œ๋ฒ„(์„ธ์…˜)๊ธฐ๋ฐ˜ ์ธ์ฆ
Computer Science/๐Ÿ“ก Network

[๋„คํŠธ์›Œํฌ] ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ(+JWT), ์„œ๋ฒ„(์„ธ์…˜)๊ธฐ๋ฐ˜ ์ธ์ฆ

728x90

ํ† ํฐ(Token) ๊ธฐ๋ฐ˜ ์ธ์ฆ

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์† ์‹œ ์„œ๋ฒ„์—์„œ ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ธ์ฆ์˜ ์˜๋ฏธ๋กœ 'ํ† ํฐ'์„ ๋ถ€์—ฌ -> ์ธ์ฆ(Authentication)
  • ํด๋ผ์ด์–ธํŠธ๋Š” ๋˜ ๋‹ค์‹œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋ฐœ๊ธ‰๋ฐ›์€ ํ† ํฐ์„ ์š”์ฒญ ํ—ค๋”์— ์‹ฌ์–ด ์ „์†ก
  • ์„œ๋ฒ„๋Š” ํ—ค๋” ๋‚ด ํ† ํฐ์„ ์—ด์–ด ์ž์‹ ์ด ์ œ๊ณตํ•œ ํ† ํฐ์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์ธ์ฆ ๊ณผ์ • ์ฒ˜๋ฆฌ -> ์ธ๊ฐ€(Authorization)
๐Ÿ’ก์šฉ์–ด ์ •๋ฆฌ
- ์ธ์ฆ(Authentication): ์ž์‹ ์ด ๋ˆ„๊ตฌ์ธ์ง€ ์ฆ๋ช…ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ๊ณผ์ • (๋กœ๊ทธ์ธ)
- ์ธ๊ฐ€(Authorization): ์ธ์ฆ ์ž‘์—… ์ดํ›„์— ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ž์› ์ ‘๊ทผ ํ™•์ธ ๋ฐ ํ—ˆ๊ฐ€ ์ ˆ์ฐจ (๊ถŒํ•œ ํ™•์ธ)
  • ์žฅ์ 
    • ํ† ํฐ ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— stateless(๋ฌด์ƒํƒœ)ํ•˜๋ฉฐ, ์„œ๋ฒ„ ํ™•์žฅ์— ์šฉ์ด (์„œ๋ฒ„ ๋ถ€๋‹ด X)
    • ํ† ํฐ์€ ํ•œ ๋ฒˆ ๋ฐœ๊ธ‰๋˜๋ฉด ์œ ํšจ๊ธฐ๊ฐ„์ด ๋งŒ๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    • ํ† ํฐ์—๋Š” ๊ธฐ๋ณธ ์ •๋ณด, ์ „๋‹ฌํ•  ์ •๋ณด, ํ† ํฐ์ด ๊ฒ€์ฆ๋˜์—ˆ๋‹ค๋Š” ์„œ๋ช… ๋“ฑ ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ž์ฒด์ ์œผ๋กœ ์ง€๋‹ˆ๊ณ  ์žˆ์Œ
    • header์™€ payload๋ฅผ ๊ฐ€์ง€๊ณ  signature์„ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์œ„๋ณ€์กฐ ๋ฐฉ์ง€
  • ๋‹จ์ 
    • ์ฟ ํ‚ค/์„ธ์…˜๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ† ํฐ ์ž์ฒด์˜ ๋ฐ์ดํ„ฐ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด, ์ธ์ฆ ์š”์ฒญ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ๋„คํŠธ์›Œํฌ ๋ถ€ํ•˜ ๋ฐœ์ƒ
    • Payload ์ž์ฒด๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ €์˜ ์ค‘์š”ํ•œ ์ •๋ณด๋Š” ๋‹ด์„ ์ˆ˜ ์žˆ์Œ
    • ํ† ํฐ์„ ํƒˆ์ทจ ๋‹นํ•  ๊ฒฝ์šฐ ๋Œ€์ฒ˜๊ฐ€ ์–ด๋ ค์›€

 

ํ† ํฐ ์ธ์ฆ ๊ณผ์ •

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋กœ๊ทธ์ธ
  2. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ(์‚ฌ์šฉ์ž)์—๊ฒŒ ํ† ํฐ์„ ๋ฐœ๊ธ‰
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„ ์ธก์—์„œ ์ „๋‹ฌ๋ฐ›์€ ํ† ํฐ์„ ์ฟ ํ‚ค๋‚˜ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ
  4. ์„œ๋ฒ„์— ์š”์ฒญ ์‹œ๋งˆ๋‹ค ํ•ด๋‹น ํ† ํฐ์„ HTTP ์š”์ฒญ ํ—ค๋”์— ํฌํ•จ์‹œ์ผœ ์ „๋‹ฌ
  5. ์„œ๋ฒ„๋Š” ์ „๋‹ฌ๋ฐ›์€ ํ† ํฐ์„ ๊ฒ€์ฆํ•˜๊ณ , ์š”์ฒญ์— ์‘๋‹ต

 

JWT (JSON Web Token)

  • ์ธ์ฆ์— ํ•„์š”ํ•œ ์ •๋ณด๋“ค์„ ์•”ํ˜ธํ™”์‹œํ‚จ JSON ํ† ํฐ์„ ์˜๋ฏธ
  • JWT ํ† ํฐ์€ ์ (.)์œผ๋กœ ๊ตฌ๋ถ„๋œ Header, Payload, Signature๋กœ ๊ตฌ์„ฑ
    1. Header(ํ—ค๋”): ๋ณดํ†ต ํ† ํฐ์˜ ํƒ€์ž…์ด๋‚˜ ์„œ๋ช… ์ƒ์„ฑ์— ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ์ €์žฅ
    2. Payload(๋‚ด์šฉ):  ์‚ฌ์šฉ์ž ๊ถŒํ•œ ์ •๋ณด์™€ ์‹ค์ œ๋กœ ์‚ฌ์šฉ๋  ์ •๋ณด(JWT๋ฅผ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ)๋ฅผ ์ €์žฅ
    3. Signature(์„œ๋ช…): 'Header+Payload'์™€ ์„œ๋ฒ„๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์œ ์ผํ•œ Key๊ฐ’์„ ํ—ค๋”์—์„œ ์ •์˜ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•”ํ˜ธํ™”ํ•œ ๊ฐ’ (๋น„๋Œ€์นญ ์•”ํ˜ธํ™”) -> Authorization(์ธ๊ฐ€) ์ž‘์—…์œผ๋กœ ํ† ํฐ์˜ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์‹œ ์‚ฌ์šฉ

 

 

์„œ๋ฒ„(์„ธ์…˜) ๊ธฐ๋ฐ˜ ์ธ์ฆ

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์† ์‹œ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ(์‚ฌ์šฉ์ž)์˜ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์˜ ์„ธ์…˜ ์ €์žฅ์†Œ์— ์ €์žฅ ํ›„ ์„ธ์…˜ID ๋ฐœ๊ธ‰ -> ์ธ์ฆ(Authentication)
  • ํด๋ผ์ด์–ธํŠธ๋Š” ๋˜ ๋‹ค์‹œ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ๋ฐœ๊ธ‰๋ฐ›์€ ์„ธ์…˜ID์„ ์š”์ฒญ ํ—ค๋”์™€ ํ•จ๊ป˜ ์ „์†ก
  • ์„œ๋ฒ„๋Š” ํ—ค๋” ๋‚ด ์„ธ์…˜ID๋ฅผ ํ†ตํ•ด ์„ธ์…˜ ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•œ ํ›„ ์„ธ์…˜ID์— ํ•ด๋‹นํ•˜๋Š” ์„ธ์…˜ ์ •๋ณด๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์ธ์ฆ ๊ณผ์ • ์ฒ˜๋ฆฌ -> ์ธ๊ฐ€(Authorization)

 

  • ์žฅ์ 
    • ๋ชจ๋“  ์ธ์ฆ ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์„ฑ์ด ๋†’์Œ 
  • ๋‹จ์ 
    • ์„œ๋ฒ„ ์ธก (์„ธ์…˜ ์ €์žฅ์†Œ)์—์„œ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋ฏ€๋กœ ์š”์ฒญ์ด ๋งŽ์•„์ง€๋ฉด ์„œ๋ฒ„ ๋ถ€ํ•˜๊ฐ€ ์‹ฌํ•ด์ง
    • ๊ณต๊ฒฉ์ž๊ฐ€ ์„ธ์…˜ID๋ฅผ ํƒˆ์ทจํ•˜์—ฌ ์ •์ƒ ํด๋ผ์ด์–ธํŠธ์ธ ์ฒ™ ์œ„์žฅ ๊ฐ€๋Šฅ 
    • ์„œ๋ฒ„ ํ™•์žฅ ์‹œ ์„ธ์…˜ ๋ถ„์‚ฐ ์ž‘์—…์ด ์–ด๋ ค์›€

 

โ€ป ์ฟ ๊ธฐ์™€ ์„ธ์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ํฌ์ŠคํŒ… ์ฐธ๊ณ ๋ฐ”๋ž๋‹ˆ๋‹ค.
https://zu-techlog.tistory.com/67

 

[๋„คํŠธ์›Œํฌ] ์ฟ ํ‚ค(Cookie)์™€ ์„ธ์…˜(Session) ํŠน์ง•, ์ฐจ์ด

HTTP ํ”„๋กœํ† ์ฝœ์€ ๋น„์—ฐ๊ฒฐ ์ง€ํ–ฅ์œผ๋กœ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋”ฐ๋ผ ์‘๋‹ต์„ ๋ณด๋‚ด์ฃผ๋ฉด ๋ฐ”๋กœ ์—ฐ๊ฒฐ์„ ๋Š๋Š”๋‹ค. ๋˜, ์—ฐ๊ฒฐ์„ ๋Š๋Š” ์ˆœ๊ฐ„ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์˜ ํ†ต์‹ ์ด ์ข…๋ฃŒ๋˜๋ฉฐ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š

zu-techlog.tistory.com

 

728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Computer Science > ๐Ÿ“ก Network' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋„คํŠธ์›Œํฌ] DNS(๋„๋ฉ”์ธ ๋„ค์ž„ ์‹œ์Šคํ…œ) ๊ตฌ์„ฑ์š”์†Œ, ๋™์ž‘๋ฐฉ์‹  (0) 2023.02.14
[๋„คํŠธ์›Œํฌ] SOP(Same Origin Policy)์™€ CORS(Cross-Origin Resource Sharing), CORS ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•  (0) 2023.02.13
[๋„คํŠธ์›Œํฌ] SSL/TLS ํ•ธ๋“œ์‰์ดํฌ - TLS 1.3  (0) 2023.02.09
[๋„คํŠธ์›Œํฌ] HTTP/1.X, HTTP2, HTTP3 ๋ฒ„์ „ ์ฐจ์ด, ํŠน์ง•  (0) 2023.02.07
[๋„คํŠธ์›Œํฌ] TCP/IP ํ๋ฆ„์ œ์–ด์™€ ํ˜ผ์žก์ œ์–ด  (0) 2023.02.06
    'Computer Science/๐Ÿ“ก Network' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [๋„คํŠธ์›Œํฌ] DNS(๋„๋ฉ”์ธ ๋„ค์ž„ ์‹œ์Šคํ…œ) ๊ตฌ์„ฑ์š”์†Œ, ๋™์ž‘๋ฐฉ์‹
    • [๋„คํŠธ์›Œํฌ] SOP(Same Origin Policy)์™€ CORS(Cross-Origin Resource Sharing), CORS ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
    • [๋„คํŠธ์›Œํฌ] SSL/TLS ํ•ธ๋“œ์‰์ดํฌ - TLS 1.3
    • [๋„คํŠธ์›Œํฌ] HTTP/1.X, HTTP2, HTTP3 ๋ฒ„์ „ ์ฐจ์ด, ํŠน์ง•
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”