22.07.17 WIL

κ°•μ§€μ˜Β·2022λ…„ 7μ›” 17일
0

WIL

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

βœ… API(Application Programming Interface)


πŸ“° API : μ‘μš©ν”„λ‘œκ·Έλž¨ 간에 μ†Œν†΅(데이터λ₯Ό μ£Όκ³  λ°›κΈ°)ν•˜κΈ° μœ„ν•œ 방법

μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•  수 μžˆλ„λ‘ μš΄μ˜μ²΄μ œλ‚˜ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μ œκ³΅ν•˜λŠ” κΈ°λŠ₯을 μ œμ–΄ν•  수 있게 λ§Œλ“  μΈν„°νŽ˜μ΄μŠ€

μ‰½κ²Œ 말해 APIλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 데이터λ₯Ό μ½κ±°λ‚˜ μ“°κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§ν•œλ‹€.
μ—¬κΈ°μ„œ Interfaceλž€ μƒν˜Έ 간에 μ†Œν†΅μ„ ν•˜κΈ° μœ„ν•œ 접점(방법)을 μ˜λ―Έν•œλ‹€.
예λ₯Ό λ“€μ–΄ λ§Œμ•½ 컴퓨터 λ©”λͺ¨μž₯에 글씨λ₯Ό μ“Έλ €κ³  ν•˜λ©΄ ν‚€λ³΄λ“œκ°€ ν•„μš”ν•˜λ‹€. 컴퓨터와 μ‚¬λžŒ, μƒν˜Έκ°„μ˜ μ†Œν†΅μ„ μœ„ν•΄ λ§Œλ“€μ–΄μ§„ 접점, 즉 μ—¬κΈ°μ„œ ν‚€λ³΄λ“œκ°€ μΈν„°νŽ˜μ΄μŠ€κ°€ λœλ‹€.
즉 APIλž€ ν”„λ‘œκ·Έλž¨λ“€λΌλ¦¬ μ„œλ‘œ μ—°κ²°λ˜κ³  영ν–₯을 λ―ΈμΉ  수 있게 λ§Œλ“œλŠ” 방법이닀.

βœ… JWT(Json Web Token)


πŸ“° JWT : λͺ¨λ°”μΌμ΄λ‚˜ μ›Ήμ˜ μ‚¬μš©μž 인증을 μœ„ν•΄ μ‚¬μš©ν•˜λŠ” μ•”ν˜Έν™”λœ 토큰

μ›Ή μƒμ—μ„œ 정보λ₯Ό Jsonν˜•νƒœλ‘œ μ£Όκ³  λ°›κΈ° μœ„ν•΄ ν‘œμ€€κ·œμ•½μ— 따라 μƒμ„±ν•œ μ•”ν˜Έν™”λœ 토큰

JWT 정보λ₯Ό request에 λ‹΄μ•„ μ‚¬μš©μž 정보 μ—΄λžŒ, μˆ˜μ • λ“± 개인적인 μž‘μ—… 등을 μˆ˜ν–‰ν•  수 μžˆκ²Œν•œλ‹€.

JWT의 κ΅¬μ„±μš”μ†Œ

JWTλŠ” μ„Έ 파트 헀더(Header), νŽ˜μ΄λ‘œλ“œ(Payload), μ„œλͺ…(Signature)둜 λ‚˜λˆ„μ–΄μ ΈμžˆμœΌλ©°, 각 νŒŒνŠΈλŠ” .(점)으둜 κ΅¬λΆ„ν•˜μ—¬ ν‘œν˜„λœλ‹€.

  • 헀더(header)
    μ–΄λ– ν•œ μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ•”ν˜Έν™”ν•  것인지, μ–΄λ– ν•œ 토큰을 μ‚¬μš©ν•  것인지에 λŒ€ν•œ 정보가 λ“€μ–΄μžˆλ‹€.

  • νŽ˜μ΄λ‘œλ“œ(Payload)
    μ „λ‹¬ν•˜λ €λŠ” ν΄λ ˆμž„(μ‚¬μš©μž idλ‚˜ λ‹€λ₯Έ 데이터듀)이 λ“€μ–΄μžˆλ‹€.
    payload에 μžˆλŠ” λ‚΄μš©μ€ μˆ˜μ • κ°€λŠ₯ν•˜λ©° 더 λ§Žμ€ 정보λ₯Ό μΆ”κ°€ν•  수 μžˆλ‹€.
    But! λ…ΈμΆœκ³Ό μˆ˜μ •μ΄ κ°€λŠ₯ν•˜λ―€λ‘œ 인증이 ν•„μš”ν•œ μ΅œμ†Œν•œμ˜ μ •λ³΄λ§Œμ„ λ‹΄μ•„μ•Όν•œλ‹€.
    (개인 정보가 μ•„λ‹Œ 이 토큰을 κ°€μ‘Œμ„ λ•Œ κΆŒν•œμ˜ λ²”μœ„λ‚˜ ν† ν°μ˜ λ°œκΈ‰μΌκ³Ό 말료일자 λ“±)

  • μ„œλͺ…(Signature)
    헀더와 정보λ₯Ό ν•©μΉœ ν›„ λ°œκΈ‰ν•΄μ€€ μ„œλ²„κ°€ μ§€μ •ν•œ secret key둜 μ•”ν˜Έν™” μ‹œμΌœ 토큰을 λ³€μ‘°ν•˜κΈ° μ–΄λ ΅κ²Œ λ§Œλ“€μ–΄μ€€λ‹€.
    λ§Œμ•½ 토큰이 λ°œκΈ‰λœ ν›„ λˆ„κ΅°κ°€ Payload의 정보λ₯Ό μˆ˜μ •ν•˜λ©΄ Payloadλ‚΄μš©μ„ 기반으둜 이미 μ•”ν˜Έν™” λ˜μ–΄μžˆλŠ” κ²°κ³Όκ°€ μ €μž₯λ˜μ–΄ 있기 λ•Œλ¬Έμ— μ‘°μž‘λ˜μ–΄μžˆλŠ” Payload와 λ‹€λ₯Έ 결과값이 λ‚˜μ˜¨λ‹€.
    이λ₯Ό 톡해 μ„œλ²„λŠ” ν† ν°μ˜ μ‘°μž‘ μ—¬λΆ€λ₯Ό μ‰½κ²Œ μ•Œ 수 있게 되며 λ‹€λ₯Έ μ‚¬λžŒμ΄ μ‘°μž‘λœ 토큰을 μ•…μš©ν•˜κΈ° μ–΄λ €μ›Œμ§„λ‹€.

JWT λ™μž‘μ›λ¦¬


1. μ‚¬μš©μž λ‘œκ·ΈμΈμ„ μš”μ²­ν•œλ‹€
2. μ„œλ²„λŠ” νšŒμ›DB에 λ“€μ–΄κ°€ μžˆλŠ” μ‚¬μš©μžμΈμ§€ ν™•μΈν•œλ‹€.
3. 확인이 μ™„λ£Œλ˜λ©΄ 둜그인 μš”μ²­ 확인 ν›„, secret keyλ₯Ό 톡해 토큰을 λ°œκΈ‰ν•œλ‹€.
4. 이것을 μ‚¬μš©μžμ—κ²Œ μ „λ‹¬ν•œλ‹€.
5. μ„œλΉ„μŠ€ μš”μ²­κ³Ό κΆŒν•œμ„ ν™•μΈν•˜κΈ° μœ„ν•΄ 헀더에 데이터(JWT)λ₯Ό μš”μ²­ν•œλ‹€.
6. 데이터λ₯Ό ν™•μΈν•˜κ³  JWTμ—μ„œ μ‚¬μš©μžμ˜ 정보λ₯Ό ν™•μΈν•œλ‹€.
7. μ‚¬μš©μž μš”μ²­μ— λŒ€ν•œ 응닡과 μš”μ²­ν•œ 데이터λ₯Ό 전달해쀀닀.

토큰 기반 인증 방식은 μ‚¬μš©μž 인증이 μ™„λ£Œν•œ 이후에 토큰을 λ°œκΈ‰ν•œλ‹€.
ν΄λΌμ΄μ–ΈνŠΈμͺ½μ—μ„œ 전달받은 토큰을 μ €μž₯ν•˜κ³  μ„œλ²„μ— μš”μ²­ν•  λ•Œλ§ˆλ‹€ ν•΄λ‹Ή 토큰을 μ„œλ²„μ— ν•¨κ»˜ μ „λ‹¬ν•˜λ©΄ μ„œλ²„λŠ” 토큰을 κ²€μ¦ν•˜κ³  μ‘λ‹΅ν•˜λŠ” λ°©μ‹μœΌλ‘œ μž‘λ™ν•œλ‹€.

profile
Hello World!
post-custom-banner

0개의 λŒ“κΈ€