2022.03.27 TIL

ꢌ윀경·2022λ…„ 3μ›” 27일
0

TIL

λͺ©λ‘ 보기
15/15
post-thumbnail

0.Token
1.WebAssembly

Token

토큰 기반 μ‹œμŠ€ν…œμ€ stateless 이닀. 즉 μƒνƒœλ₯Ό μœ μ§€ν•˜μ§€ μ•ŠλŠ”λ‹€ν•΄μ„œ λ¬΄μƒνƒœλΌκ³  ν•œλ‹€.

이 μ‹œμŠ€ν…œμ€ μ‚¬μš©μžμ˜ 인증 정보λ₯Ό μ„œλ²„λ‚˜ μ„Έμ…˜μ— 담지 μ•ŠλŠ”λ‹€.

μ„Έμ…˜μ΄ μ‘΄μž¬ν•˜μ§€ μ•Šμ•„ μ‚¬μš©μžλ“€μ˜ 둜그인 μœ λ¬΄μ— 관계없이 μ„œλ²„λ₯Ό μ†μ‰½κ²Œ ν™•μž₯ν•  수 μžˆλ‹€.

토큰 기반 μ‹œμŠ€ν…œμ˜ κ΅¬ν˜„ 방식은 μ‹œμŠ€ν…œλ§ˆλ‹€ 크고 μž‘μ€ 차이가 μžˆμ§€λ§Œ, λŒ€λž΅μ μœΌλ‘œ 보면 μ•„λž˜μ™€ κ°™λ‹€.

  1. μ‚¬μš©μžκ°€ ID 와 PW 둜 λ‘œκ·ΈμΈμ„ ν•œλ‹€.
  2. μ„œλ²„μΈ‘μ—μ„œ ν•΄λ‹Ή 계정 정보λ₯Ό κ²€μ¦ν•œλ‹€.
  3. 계정 정보가 μ •ν™•ν•˜λ‹€λ©΄, μ„œλ²„μΈ‘μ—μ„œ μ‚¬μš©μžμ—κ²Œ signed 토큰을 λ°œκΈ‰ν•΄μ€€λ‹€.
    (μ—¬κΈ°μ„œ signed의 μ˜λ―ΈλŠ” 해탕 토큰이 μ„œλ²„μ—μ„œ μ •μƒμ μœΌλ‘œ λ°œκΈ‰λœ ν† ν°μž„μ„ 증λͺ…ν•˜λŠ” signatureλ₯Ό μ§€λ‹ˆκ³  μžˆλ‹€λŠ” 말이닀.)
  4. ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ 전달받은 토큰을 μ €μž₯해두고, μ„œλ²„μ— μš”μ²­ν•  λ•Œ λ§ˆλ‹€ 해탕 토큰을 ν•¨κ»˜ μ„œλ²„μ— μ „λ‹¬ν•œλ‹€.
  5. μ„œλ²„λŠ” 토큰을 κ²€μ¦ν•˜κ³  μš”μ²­μ— μ‘λ‹΅ν•œλ‹€.

ν† ν°μ˜ μž₯점

λ¬΄μƒνƒœ(Stateless)와 ν™•μž₯μ„±(Scalability)
client side 에 토큰을 μ €μž₯ν•˜κΈ°λ•Œλ¬Έμ— μ™„μ „ν•œ λ¬΄μƒνƒœ(Stateless)이며,μ„œλ²„λ₯Ό ν™•μž₯ν•˜κΈ°μ— 맀우 μ ν•©ν•œ ν™˜κ²½μ„ μ œκ³΅ν•œλ‹€.

μ„Έμ…˜μ„ μ„œλ²„μΈ‘μ— μ €μž₯ν•˜κ³  있고, μ—¬λŸ¬λŒ€μ˜ μ„œλ²„λ₯Ό μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μžμ˜ μš”μ²­μ„ λΆ„μ‚°ν•΄λ‘μ—ˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. μ–΄λ–€ ν•œ μ‚¬μš©μžκ°€ λ‘œκ·ΈμΈν•˜κΈ° μœ„ν•΄μ„œλŠ” μ²˜μŒμ— λ‘œκ·ΈμΈν–ˆμ—ˆλ˜ μ„œλ²„λ‘œ μš”μ²­μ„ 보내도둝 섀정을 ν•΄μ£Όμ–΄μ•Όμ§€λ§Œ, μ‚¬μš©μžμ—κ²Œ 결과값을 전달할 수 μžˆλ‹€. ν•˜μ§€λ§Œ, 토큰을 μ‚¬μš©ν•˜κ²Œ λœλ‹€λ©΄ μ–΄λ–€ μ„œλ²„λ‘œ μ‚¬μš©μžκ°€ μš”μ²­ν•˜μ—¬λ„ 결과값을 λ°›λŠ”λ°μ— λ¬΄κ΄€ν•˜λ‹€.

λ³΄μ•ˆμ„±
ν΄λΌμ΄μ–ΈνŠΈκ°€ 토큰을 톡해 μ„œλ²„λ‘œ μš”μ²­μ„ 보낼 λ•Œ, 더 이상 μΏ ν‚€λ₯Ό μ „λ‹¬ν•˜μ§€ μ•ŠμŒμœΌλ‘œ μΏ ν‚€λ₯Ό μ‚¬μš©ν•¨μœΌλ‘œ 인해 λ°œμƒν•˜λŠ” 취약점이 사라진닀. ν•˜μ§€λ§Œ, 토큰을 μ‚¬μš©ν•˜λŠ” ν™˜κ²½μ—μ„œλ„ 취약점이 μ‘΄μž¬ν•  수 μžˆμœΌλ‹ˆ μ–Έμ œλ‚˜ λŒ€λΉ„ν•΄μ•Ό ν•œλ‹€.

ν™•μž₯μ„±(Extensibility)
μ—¬κΈ°μ„œ λ§ν•˜λŠ” ν™•μž₯μ„±(Extensibility)은 μ•žμ„œ λ§ν•œ ν™•μž₯μ„±(Scalability)κ³ΌλŠ” λ‹€λ₯Έ κ°œλ…μ΄λ‹€.
Scalability 은 μ„œλ²„λ₯Ό ν™•μž₯ν•˜λŠ”κ±Έ μ˜λ―Έν•˜λŠ” 반면, Extensibility λŠ” 둜그인 정보가 μ‚¬μš©λ˜λŠ” λΆ„μ•Όλ₯Ό ν™•μž₯ν•˜λŠ” 것을 μ˜λ―Έν•œλ‹€. 토큰을 μ‚¬μš©ν•˜μ—¬ λ‹€λ₯Έ μ„œλΉ„μŠ€μ—μ„œλ„ κΆŒν•œμ„ κ³΅μœ ν•  수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄ μ–΄λ–€ λΈŒλΌμš°μ €μ—μ„œλŠ” Facebook, LinkedIn, Github, Google κ³„μ •μœΌλ‘œ 둜그인 ν•  수 μžˆλ‹€. 토큰 기반 μ‹œμŠ€ν…œμ—μ„œλŠ” 토큰에 선택적인 κΆŒν•œλ§Œ λΆ€μ—¬ν•˜μ—¬ λ°œκΈ‰μ„ ν•  수 μžˆλ‹€.

WebAssembly

μ›Ή μ–΄μ…ˆλΈ”λ¦¬λŠ” C, C++ κ³Ό 같은 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ₯Ό μ»΄νŒŒμΌν•΄μ„œ λΈŒλΌμš°μ €μ˜ μ’…λ₯˜μ— 상관없이 λΉ λ₯΄κ²Œ μ‹€ν–‰λ˜λŠ” λ°”μ΄λ„ˆλ¦¬ν˜•μ‹(0κ³Ό 1둜 이루어진 ν˜•μ‹)으둜 λ°”κΏ”μ£ΌλŠ” κΈ°μˆ μ„ λ§ν•œλ‹€.

일반적으둜 μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  λ•Œ μ‚¬μš©ν•˜λŠ” μ–Έμ–΄λŠ” html, css, js이며 이쀑 jsλŠ” 동적인 뢀뢄을 κ°œλ°œν•œλ‹€. μ΅œκ·Όμ—λŠ” js의 속도가 λΉ¨λΌμ‘Œμ§€λ§Œ, 아직 C, C++ κ³Ό 같은 언어듀에 λΉ„ν•΄ λŠλ¦¬λ‹€.

기쑴의 κ°œλ°œμ€ js둜 κ°œλ°œν•˜λ‹€λ³΄λ‹ˆ κ²Œμž„μ΄λ‚˜ λ™μ˜μƒ νŽΈμ§‘κΈ° λ“±κ³Ό 같은 κ³ μ„±λŠ₯의 μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λΈŒλΌμš°μ €μ—μ„œ λ™μž‘ν•˜λŠ”λ° 어렀움이 μžˆλ‹€.

μ›Ή μ–΄μ…ˆλΈ”λ¦¬λŠ” μ›Ή ν”Œλž«νΌμ—μ„œ μ΄μ „μ—λŠ” λΆˆκ°€λŠ₯ν–ˆλ˜ ν΄λΌμ΄μ–ΈνŠΈ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•΄ μ›Ήμ—μ„œ μ—¬λŸ¬ μ–Έμ–΄λ‘œ μž‘μ„±λ˜ μ½”λ“œλ₯Ό λ„€μ΄ν‹°λΈŒμ— κ°€κΉŒμš° μ†λ„λ‘œ μ‹€ν–‰λ˜λŠ” 길을 μ œκ³΅ν•œλ‹€.

μ›Ή μ–΄μ…ˆλΈ”λ¦¬ λͺ¨λ“ˆμ€ μ›Ήμ•±μœΌλ‘œ κ°€μ Έμ™€μ„œ jsλ₯Ό 톡해 μ‚¬μš©ν•  수 있게 ν•  수 μžˆλ‹€. js ν”„λ ˆμž„μ›Œν¬λŠ” μ›Ή μ–΄μ…ˆλΈ”λ¦¬λ₯Ό μ‚¬μš©ν•΄μ„œ λŒ€κ·œλͺ¨ μ„±λŠ₯ 이점과 μƒˆλ‘œμš΄ κΈ°λŠ₯을 μ œκ³΅ν•˜λ©΄μ„œ μ›Ή κ°œλ°œμžκ°€ μ‰½κ²Œ κΈ°λŠ₯을 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•  수 μžˆλ‹€.

0개의 λŒ“κΈ€