Jwt-auth: [질문] ν—€λ“œλ¦¬μŠ€ API μ‚¬μš© 사둀

에 λ§Œλ“  2019λ…„ 12μ›” 12일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: WP-API/jwt-auth

이 ν”ŒλŸ¬κ·ΈμΈμ˜ 인증 흐름 μ•„ν‚€ν…μ²˜λŠ” ν›Œλ₯­ν•©λ‹ˆλ‹€. λ³΄μ•ˆ 문제λ₯Ό μ΄ν•΄ν•©λ‹ˆλ‹€. ν—€λ“œλ¦¬μŠ€ CMSλ‘œμ„œμ˜ Wordpress와 같은 κΈ°λŠ₯의 μ£Όμš” μ‚¬μš© 사둀λ₯Ό λΉ„ν™œμ„±ν™”ν•˜μ§€λ§Œ.

ν—€λ“œλ¦¬μŠ€ CMS 인증 λΉ„ν™œμ„±ν™”

ν—€λ“œλ¦¬μŠ€ CMSλŠ” μ‚¬μš©μžκ°€ username 및 password λ₯Ό 톡해 λ‘œκ·ΈμΈν•΄μ•Ό ν•©λ‹ˆλ‹€. μ‚¬μš©μžμ—κ²Œ JWTκ°€ 있으면 보호된 λ¦¬μ†ŒμŠ€μ— 인증된 μš”μ²­μ„ 보낼 수 μžˆμŠ΅λ‹ˆλ‹€. ν—€λ“œλ¦¬μŠ€ CMS ν™˜κ²½μ—μ„œλŠ” μ‚¬μš©μžμ—κ²Œ API 토큰 생성을 μš”μ²­ν•˜λŠ” 것이 κΈˆμ§€λ˜κ³  직관적이지 μ•ŠμŠ΅λ‹ˆλ‹€.

λ³΄μ•ˆμ€ APIμ—μ„œ λ³΄ν˜Έλ˜λŠ” ν•­λͺ©μ„ μ§€μ‹œν•˜λŠ” RBAC κΆŒν•œ, μ‚¬μš©μž μ—­ν•  및 μ±…μž„μ„ 톡해 κ΅¬ν˜„λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. λ³΄μ•ˆ λ¬Έμ œλŠ” RBAC의 맀우 μ—„κ²©ν•œ 기본값을 톡해 완화될 수 μžˆμŠ΅λ‹ˆλ‹€. 이미 Wordpressμ—λŠ” ν›Œλ₯­ν•œ μ—­ν• κ³Ό μ±…μž„ ν”„λ ˆμž„μ›Œν¬κ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ‹€μ œ λ³΄μ•ˆ 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄:

  • 수λͺ…이 κΈ΄ 토큰? 수λͺ…이 짧은 ν† ν°μœΌλ‘œ λ§Œλ“œμ‹­μ‹œμ˜€.
  • 수λͺ…이 κΈ΄ 토큰이 λ„λ‚œλ‹Ήν•  수 μžˆλ‹€λŠ” μš°λ €κ°€ μžˆμŠ΅λ‹ˆκΉŒ? API 토큰, null μΈμˆ˜λ„ λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€.
  • JWT λͺ¨λ²” 사둀에 λ”°λ₯΄λ©΄ 수λͺ…이 짧은 tokens 및 수λͺ…이 κΈ΄ refresh_tokens (κ°±μ‹  토큰은 μ·¨μ†Œ κ°€λŠ₯) λ”°λΌμ„œ 이것이 손싀될 수 μžˆλŠ” 수λͺ…이 λ¬΄ν•œ API 토큰을 λ‚˜λˆ μ£ΌλŠ” 것보닀 더 μ•ˆμ „ν•©λ‹ˆλ‹€.

이것은 단지 OAuth2κ°€ μ•„λ‹Œκ°€μš”?

이 μ ‘κ·Ό 방식은 본질적으둜 oAuth2 "personal access" 토큰 λΆ€μ—¬ μ‹œλ‚˜λ¦¬μ˜€μž…λ‹ˆλ‹€. λ”°λΌμ„œ μ μ ˆν•œ oAuth2 ν‘œμ€€ κ΅¬ν˜„μ— λΉ„ν•΄ 이와 같은 μ‚¬μš©μž 지정 토큰 인증 μ„œλ²„ μ ‘κ·Ό λ°©μ‹μ˜ μž₯점에 μ˜λ¬Έμ„ μ œκΈ°ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? μ—¬κΈ°μ„œ λ³΄μ•ˆμ΄ μ£Όμš” 관심사라면 이 μ ‘κ·Ό 방식이 μ‹€μ œλ‘œ λ³΄μ•ˆ μœ„ν—˜μ„ λ‚΄ν¬ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? 예: php-league-oatuh-2 와 같은 oAuth2의 μ „νˆ¬ ν…ŒμŠ€νŠΈ κ΅¬ν˜„

ν˜„μž¬ 인증 흐름 application-to-application 인증에 λŒ€ν•΄ μ‹€ν–‰ κ°€λŠ₯ν•œ μœ μΌν•œ μ‚¬μš© 사둀가 μžˆμŠ΅λ‹ˆκΉŒ? oAuth2λŠ” 토큰을 λΆ€μ—¬ν•˜κΈ° μœ„ν•΄ μ—¬λŸ¬ 인증 흐름 방법을 λ°°μΉ˜ν•©λ‹ˆλ‹€. ν•˜λ‚˜λŠ” 이 μ ‘κ·Ό 방식이 "personal access" λ₯Ό μ‚¬μš©ν•˜λŠ” 것이고 λ‹€λ₯Έ ν•˜λ‚˜λŠ” μ œκ°€ μ„€λͺ…ν•˜λŠ” "password access" ν† ν°μž…λ‹ˆλ‹€. 전체 oAuth2 κ΅¬ν˜„μ€ μ΄λŸ¬ν•œ μ‹œλ‚˜λ¦¬μ˜€μ™€ κ·Έ 이상을 ν—ˆμš© ν•©λ‹ˆλ‹€ ...

더 λ‚˜μ•„κ°€

μš°λ¦¬λŠ” μƒνƒœ λΉ„μ €μž₯ API 인증과 같은 것듀이 κ°œλ°œμžλ“€μ΄ μ‰½κ²Œ μ ‘κ·Όν•  수 μžˆλ‹€λ©΄ WP-API의 ν™œμš©κ³Ό 일반적으둜 Wordpress μƒνƒœκ³„μ˜ ν˜„λŒ€ν™”κ°€ 크게 ν–₯상될 것이라고 λ―ΏμŠ΅λ‹ˆλ‹€.

이것듀은 단지 생각일 뿐이며 ν† λ‘ ν•˜κ³  κΈ°μ—¬ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€!

ν›Œλ₯­ν•œ 일!

wp-headless νŒ€

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

REST APIκ°€ 핡심이 되기 μ „λΆ€ν„° λ„€μ΄ν‹°λΈŒ 앱을 ꡬ좕(λ˜λŠ” μ‹œλ„)ν•΄ μ™”μŠ΅λ‹ˆλ‹€. (예: λ…„)

μ΄ˆκΈ°μ— λ‚΄ 앱이 μΈμ¦ν•˜κ³  μ½˜ν…μΈ λ₯Ό μ—…λ‘œλ“œ/μƒμ„±ν•˜λŠ” μœ μΌν•œ 방법은 API νŒ€μ΄ μ‹œμž‘ν•œ 'OAuth1.0a' ν”ŒλŸ¬κ·ΈμΈμ„ μ‚¬μš©ν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

이제 OAuth2.0μ—μ„œ μž‘λ™ν•˜λŠ” μž‘μ—…μ΄ μžˆμŠ΅λ‹ˆλ‹€(λ‹€μ‹œ λ§ν•˜μ§€λ§Œ μΆ”κ°€ ν”ŒλŸ¬κ·ΈμΈμ„ μ„€μΉ˜ν•΄μ•Ό ν•˜λŠ” 또 λ‹€λ₯Έ κΈ°λŠ₯μž…λ‹ˆλ‹€. 이것이 핡심에 도달할지 μ—¬λΆ€λŠ” μ•Œ 수 μ—†μŒ)

이제 앱을 μ—°κ²°ν•˜λŠ” 방법에 μƒˆλ‘œμš΄ 문제λ₯Ό μ œμ‹œν•˜λŠ” JWTκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‹Ήμ—°νžˆ μ‚¬μš©μž 이름/μ•”ν˜Έκ°€ 더 잘 μž‘λ™ν•˜μ—¬ 토큰을 μ œκ³΅ν•©λ‹ˆλ‹€. (λ‹€ν–‰νžˆ JWT의 이 'WP-API' 버전은 토큰 μƒˆλ‘œ 고침을 μ§€μ›ν•©λ‹ˆλ‹€. 널리 μ‚¬μš©λ˜λŠ” λ‹€λ₯Έ JWT ν”ŒλŸ¬κ·ΈμΈμ€ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€)

λ‚˜λŠ” (ν•΅μ‹¬μ—μ„œ) 'μ¦‰μ‹œ' 인증을 μœ„ν•œ κ²¬κ³ ν•œ 'ν—€λ“œλ¦¬μŠ€'/λͺ¨λ°”일 κ΅¬ν˜„μ΄ μ—†λŠ” μƒνƒœμ—μ„œ ν˜λŸ¬κ°€λŠ” 기회(및 μ‹œκ°„)의 μ—„μ²­λ‚œ 양을 믿을 수 μ—†μŠ΅λ‹ˆλ‹€.

λ‚΄ λͺ¨λ°”일 앱은 μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  λ§Žμ€ 관리 κ΄€λ ¨ ν•­λͺ© 및 경둜 κ°œμ„  사항을 μ§€μ›ν•˜κΈ° μœ„ν•΄ 자체 ν”ŒλŸ¬κ·ΈμΈμ΄ ν•„μš”ν•©λ‹ˆλ‹€. μ‚¬μš©μž 지정 블둝 λ“±. λ‚΄ μ•± μ‚¬μš©μž/고객이 λ‹€λ₯Έ 'μ™„μ „νžˆ μ™„μ„±λ˜μ§€ μ•Šμ€' ν”ŒλŸ¬κ·ΈμΈμ„ λ‹€μš΄λ‘œλ“œν•˜μ—¬ μ„€μΉ˜ν•˜μ§€ μ•Šμ•„λ„ λ˜μ—ˆμœΌλ©΄ ν•©λ‹ˆλ‹€.

λ‚˜λŠ” κ²¬κ³ ν•œ(그리고 '곡식적인') μ†”λ£¨μ…˜μ΄ μ‘΄μž¬ν•˜κΈ°λ₯Ό λ°”λž„ λΏμž…λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

REST APIκ°€ 핡심이 되기 μ „λΆ€ν„° λ„€μ΄ν‹°λΈŒ 앱을 ꡬ좕(λ˜λŠ” μ‹œλ„)ν•΄ μ™”μŠ΅λ‹ˆλ‹€. (예: λ…„)

μ΄ˆκΈ°μ— λ‚΄ 앱이 μΈμ¦ν•˜κ³  μ½˜ν…μΈ λ₯Ό μ—…λ‘œλ“œ/μƒμ„±ν•˜λŠ” μœ μΌν•œ 방법은 API νŒ€μ΄ μ‹œμž‘ν•œ 'OAuth1.0a' ν”ŒλŸ¬κ·ΈμΈμ„ μ‚¬μš©ν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

이제 OAuth2.0μ—μ„œ μž‘λ™ν•˜λŠ” μž‘μ—…μ΄ μžˆμŠ΅λ‹ˆλ‹€(λ‹€μ‹œ λ§ν•˜μ§€λ§Œ μΆ”κ°€ ν”ŒλŸ¬κ·ΈμΈμ„ μ„€μΉ˜ν•΄μ•Ό ν•˜λŠ” 또 λ‹€λ₯Έ κΈ°λŠ₯μž…λ‹ˆλ‹€. 이것이 핡심에 도달할지 μ—¬λΆ€λŠ” μ•Œ 수 μ—†μŒ)

이제 앱을 μ—°κ²°ν•˜λŠ” 방법에 μƒˆλ‘œμš΄ 문제λ₯Ό μ œμ‹œν•˜λŠ” JWTκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‹Ήμ—°νžˆ μ‚¬μš©μž 이름/μ•”ν˜Έκ°€ 더 잘 μž‘λ™ν•˜μ—¬ 토큰을 μ œκ³΅ν•©λ‹ˆλ‹€. (λ‹€ν–‰νžˆ JWT의 이 'WP-API' 버전은 토큰 μƒˆλ‘œ 고침을 μ§€μ›ν•©λ‹ˆλ‹€. 널리 μ‚¬μš©λ˜λŠ” λ‹€λ₯Έ JWT ν”ŒλŸ¬κ·ΈμΈμ€ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€)

λ‚˜λŠ” (ν•΅μ‹¬μ—μ„œ) 'μ¦‰μ‹œ' 인증을 μœ„ν•œ κ²¬κ³ ν•œ 'ν—€λ“œλ¦¬μŠ€'/λͺ¨λ°”일 κ΅¬ν˜„μ΄ μ—†λŠ” μƒνƒœμ—μ„œ ν˜λŸ¬κ°€λŠ” 기회(및 μ‹œκ°„)의 μ—„μ²­λ‚œ 양을 믿을 수 μ—†μŠ΅λ‹ˆλ‹€.

λ‚΄ λͺ¨λ°”일 앱은 μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  λ§Žμ€ 관리 κ΄€λ ¨ ν•­λͺ© 및 경둜 κ°œμ„  사항을 μ§€μ›ν•˜κΈ° μœ„ν•΄ 자체 ν”ŒλŸ¬κ·ΈμΈμ΄ ν•„μš”ν•©λ‹ˆλ‹€. μ‚¬μš©μž 지정 블둝 λ“±. λ‚΄ μ•± μ‚¬μš©μž/고객이 λ‹€λ₯Έ 'μ™„μ „νžˆ μ™„μ„±λ˜μ§€ μ•Šμ€' ν”ŒλŸ¬κ·ΈμΈμ„ λ‹€μš΄λ‘œλ“œν•˜μ—¬ μ„€μΉ˜ν•˜μ§€ μ•Šμ•„λ„ λ˜μ—ˆμœΌλ©΄ ν•©λ‹ˆλ‹€.

λ‚˜λŠ” κ²¬κ³ ν•œ(그리고 '곡식적인') μ†”λ£¨μ…˜μ΄ μ‘΄μž¬ν•˜κΈ°λ₯Ό λ°”λž„ λΏμž…λ‹ˆλ‹€.

λ‚˜λŠ” κ°•λ ₯ν•˜κ²Œ λ™μ˜ν•©λ‹ˆλ‹€. WordpressλŠ” ν—€λ“œλ¦¬μŠ€ cms λΆ„μ•Όμ˜ 리더가 될 μœ„μΉ˜μ— μžˆμŠ΅λ‹ˆλ‹€. 핡심 νŒ€μ΄ 이에 μ§„μΆœν•œ 것 κ°™μ§€λ§Œ wordpress.com의 νŠΉμ • μ‚¬μš© 사둀λ₯Ό μ œκ³΅ν•˜κΈ° μœ„ν•œ 것일 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. ν™•μ‹€ν•˜μ§€ μ•Šλ‹€.

μš°λ¦¬λŠ” ν˜„μž¬ 이 λͺ©μ μ„ μœ„ν•΄ λ™ν˜• ν΄λΌμ΄μ–ΈνŠΈλ₯Ό 개발 μ€‘μž…λ‹ˆλ‹€. λ°˜μ‘ 후크 및 κ³΅κΈ‰μžμ™€ ν•¨κ»˜. https://github.com/wp-headless/fetch. μ•„λ§ˆλ„ μš°λ¦¬λŠ” 우리 μžμ‹ μ˜ JWT 인증 ν”ŒλŸ¬κ·ΈμΈμ„ μž‘μ„±ν•΄μ•Ό ν•  κ²ƒμž…λ‹ˆλ‹€. 그것이 μ–΄λ–»κ²Œ μƒκ²ΌλŠ”μ§€μ— λŒ€ν•œ λ‚˜μ˜ 생각:

  • oAuth2 사양 μ€€μˆ˜(μ‚¬μš©μž 지정 인증 흐름을 λ§Œλ“œλŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?)
  • password , machine-to-machine , api-key λ“± μ—¬λŸ¬ 토큰 λΆ€μ—¬ 방법이 μžˆμŠ΅λ‹ˆλ‹€.
  • 잘 ν…ŒμŠ€νŠΈλœ μ£Όμš” νŒ¨ν‚€μ§€μ— μ˜μ‘΄ν•©λ‹ˆλ‹€.

μ—¬κΈ°μ—μ„œ λ‚˜λŠ” WP REST APIλ₯Ό 톡해 μ‚¬μš©μž 등둝/인증 μ‹œμŠ€ν…œμ„ κ΅¬ν˜„ν•˜λ €κ³  ν–ˆμœΌλ‚˜ WP νŒ€μ΄ μƒˆλ‘œμš΄ 바퀴λ₯Ό 발λͺ…ν•˜λŠ” 바퀴λ₯Ό 재발λͺ…ν•˜κ³  μžˆλ‹€λŠ” 것을 μ•Œμ•„λƒˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰