μ΄ νλ¬κ·ΈμΈμ μΈμ¦ νλ¦ μν€ν μ²λ νλ₯ν©λλ€. 보μ λ¬Έμ λ₯Ό μ΄ν΄ν©λλ€. ν€λλ¦¬μ€ CMSλ‘μμ Wordpressμ κ°μ κΈ°λ₯μ μ£Όμ μ¬μ© μ¬λ‘λ₯Ό λΉνμ±ννμ§λ§.
ν€λλ¦¬μ€ CMSλ μ¬μ©μκ° username
λ° password
λ₯Ό ν΅ν΄ λ‘κ·ΈμΈν΄μΌ ν©λλ€. μ¬μ©μμκ² JWTκ° μμΌλ©΄ 보νΈλ 리μμ€μ μΈμ¦λ μμ²μ λ³΄λΌ μ μμ΅λλ€. ν€λλ¦¬μ€ CMS νκ²½μμλ μ¬μ©μμκ² API ν ν° μμ±μ μμ²νλ κ²μ΄ κΈμ§λκ³ μ§κ΄μ μ΄μ§ μμ΅λλ€.
보μμ APIμμ 보νΈλλ νλͺ©μ μ§μνλ RBAC κΆν, μ¬μ©μ μν λ° μ± μμ ν΅ν΄ ꡬνλμ΄μΌ ν©λλ€. 보μ λ¬Έμ λ RBACμ λ§€μ° μ격ν κΈ°λ³Έκ°μ ν΅ν΄ μνλ μ μμ΅λλ€. μ΄λ―Έ Wordpressμλ νλ₯ν μν κ³Ό μ± μ νλ μμν¬κ° μμ΅λλ€.
μ€μ 보μ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄:
tokens
λ° μλͺ
μ΄ κΈ΄ refresh_tokens
(κ°±μ ν ν°μ μ·¨μ κ°λ₯) λ°λΌμ μ΄κ²μ΄ μμ€λ μ μλ μλͺ
μ΄ λ¬΄ν API ν ν°μ λλ μ£Όλ κ²λ³΄λ€ λ μμ ν©λλ€.μ΄ μ κ·Ό λ°©μμ λ³Έμ§μ μΌλ‘ oAuth2 "personal access"
ν ν° λΆμ¬ μλ리μ€μ
λλ€. λ°λΌμ μ μ ν oAuth2 νμ€ κ΅¬νμ λΉν΄ μ΄μ κ°μ μ¬μ©μ μ§μ ν ν° μΈμ¦ μλ² μ κ·Ό λ°©μμ μ₯μ μ μλ¬Έμ μ κΈ°ν μ μμ΅λκΉ? μ¬κΈ°μ 보μμ΄ μ£Όμ κ΄μ¬μ¬λΌλ©΄ μ΄ μ κ·Ό λ°©μμ΄ μ€μ λ‘ λ³΄μ μνμ λ΄ν¬νκ³ μμ΅λκΉ? μ: php-league-oatuh-2 μ κ°μ oAuth2μ μ ν¬ ν
μ€νΈ ꡬν
νμ¬ μΈμ¦ νλ¦ application-to-application
μΈμ¦μ λν΄ μ€ν κ°λ₯ν μ μΌν μ¬μ© μ¬λ‘κ° μμ΅λκΉ? oAuth2λ ν ν°μ λΆμ¬νκΈ° μν΄ μ¬λ¬ μΈμ¦ νλ¦ λ°©λ²μ λ°°μΉν©λλ€. νλλ μ΄ μ κ·Ό λ°©μμ΄ "personal access"
λ₯Ό μ¬μ©νλ κ²μ΄κ³ λ€λ₯Έ νλλ μ κ° μ€λͺ
νλ "password access"
ν ν°μ
λλ€. μ 체 oAuth2 ꡬνμ μ΄λ¬ν μλ리μ€μ κ·Έ μ΄μμ νμ© ν©λλ€ ...
μ°λ¦¬λ μν λΉμ μ₯ API μΈμ¦κ³Ό κ°μ κ²λ€μ΄ κ°λ°μλ€μ΄ μ½κ² μ κ·Όν μ μλ€λ©΄ WP-APIμ νμ©κ³Ό μΌλ°μ μΌλ‘ Wordpress μνκ³μ νλνκ° ν¬κ² ν₯μλ κ²μ΄λΌκ³ λ―Ώμ΅λλ€.
μ΄κ²λ€μ λ¨μ§ μκ°μΌ λΏμ΄λ©° ν λ‘ νκ³ κΈ°μ¬νκ³ μΆμ΅λλ€!
νλ₯ν μΌ!
REST APIκ° ν΅μ¬μ΄ λκΈ° μ λΆν° λ€μ΄ν°λΈ μ±μ ꡬμΆ(λλ μλ)ν΄ μμ΅λλ€. (μ: λ )
μ΄κΈ°μ λ΄ μ±μ΄ μΈμ¦νκ³ μ½ν μΈ λ₯Ό μ λ‘λ/μμ±νλ μ μΌν λ°©λ²μ API νμ΄ μμν 'OAuth1.0a' νλ¬κ·ΈμΈμ μ¬μ©νλ κ²μ΄μμ΅λλ€.
μ΄μ OAuth2.0μμ μλνλ μμ μ΄ μμ΅λλ€(λ€μ λ§νμ§λ§ μΆκ° νλ¬κ·ΈμΈμ μ€μΉν΄μΌ νλ λ λ€λ₯Έ κΈ°λ₯μ λλ€. μ΄κ²μ΄ ν΅μ¬μ λλ¬ν μ§ μ¬λΆλ μ μ μμ)
μ΄μ μ±μ μ°κ²°νλ λ°©λ²μ μλ‘μ΄ λ¬Έμ λ₯Ό μ μνλ JWTκ° μμ΅λλ€. λΉμ°ν μ¬μ©μ μ΄λ¦/μνΈκ° λ μ μλνμ¬ ν ν°μ μ 곡ν©λλ€. (λ€νν JWTμ μ΄ 'WP-API' λ²μ μ ν ν° μλ‘ κ³ μΉ¨μ μ§μν©λλ€. λ리 μ¬μ©λλ λ€λ₯Έ JWT νλ¬κ·ΈμΈμ μ§μνμ§ μμ΅λλ€)
λλ (ν΅μ¬μμ) 'μ¦μ' μΈμ¦μ μν κ²¬κ³ ν 'ν€λ리μ€'/λͺ¨λ°μΌ ꡬνμ΄ μλ μνμμ νλ¬κ°λ κΈ°ν(λ° μκ°)μ μμ²λ μμ λ―Ώμ μ μμ΅λλ€.
λ΄ λͺ¨λ°μΌ μ±μ μμ μ μννκ³ λ§μ κ΄λ¦¬ κ΄λ ¨ νλͺ© λ° κ²½λ‘ κ°μ μ¬νμ μ§μνκΈ° μν΄ μ체 νλ¬κ·ΈμΈμ΄ νμν©λλ€. μ¬μ©μ μ§μ λΈλ‘ λ±. λ΄ μ± μ¬μ©μ/κ³ κ°μ΄ λ€λ₯Έ 'μμ ν μμ±λμ§ μμ' νλ¬κ·ΈμΈμ λ€μ΄λ‘λνμ¬ μ€μΉνμ§ μμλ λμμΌλ©΄ ν©λλ€.
λλ κ²¬κ³ ν(κ·Έλ¦¬κ³ '곡μμ μΈ') μ루μ μ΄ μ‘΄μ¬νκΈ°λ₯Ό λ°λ λΏμ λλ€.
λλ κ°λ ₯νκ² λμν©λλ€. Wordpressλ ν€λλ¦¬μ€ cms λΆμΌμ 리λκ° λ μμΉμ μμ΅λλ€. ν΅μ¬ νμ΄ μ΄μ μ§μΆν κ² κ°μ§λ§ wordpress.comμ νΉμ μ¬μ© μ¬λ‘λ₯Ό μ 곡νκΈ° μν κ²μΌ μλ μμ΅λλ€. νμ€νμ§ μλ€.
μ°λ¦¬λ νμ¬ μ΄ λͺ©μ μ μν΄ λν ν΄λΌμ΄μΈνΈλ₯Ό κ°λ° μ€μ λλ€. λ°μ νν¬ λ° κ³΅κΈμμ ν¨κ». https://github.com/wp-headless/fetch. μλ§λ μ°λ¦¬λ μ°λ¦¬ μμ μ JWT μΈμ¦ νλ¬κ·ΈμΈμ μμ±ν΄μΌ ν κ²μ λλ€. κ·Έκ²μ΄ μ΄λ»κ² μκ²Όλμ§μ λν λμ μκ°:
password
, machine-to-machine
, api-key
λ± μ¬λ¬ ν ν° λΆμ¬ λ°©λ²μ΄ μμ΅λλ€.μ¬κΈ°μμ λλ WP REST APIλ₯Ό ν΅ν΄ μ¬μ©μ λ±λ‘/μΈμ¦ μμ€ν
μ ꡬννλ €κ³ νμΌλ WP νμ΄ μλ‘μ΄ λ°ν΄λ₯Ό λ°λͺ
νλ λ°ν΄λ₯Ό μ¬λ°λͺ
νκ³ μλ€λ κ²μ μμλμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
REST APIκ° ν΅μ¬μ΄ λκΈ° μ λΆν° λ€μ΄ν°λΈ μ±μ ꡬμΆ(λλ μλ)ν΄ μμ΅λλ€. (μ: λ )
μ΄κΈ°μ λ΄ μ±μ΄ μΈμ¦νκ³ μ½ν μΈ λ₯Ό μ λ‘λ/μμ±νλ μ μΌν λ°©λ²μ API νμ΄ μμν 'OAuth1.0a' νλ¬κ·ΈμΈμ μ¬μ©νλ κ²μ΄μμ΅λλ€.
μ΄μ OAuth2.0μμ μλνλ μμ μ΄ μμ΅λλ€(λ€μ λ§νμ§λ§ μΆκ° νλ¬κ·ΈμΈμ μ€μΉν΄μΌ νλ λ λ€λ₯Έ κΈ°λ₯μ λλ€. μ΄κ²μ΄ ν΅μ¬μ λλ¬ν μ§ μ¬λΆλ μ μ μμ)
μ΄μ μ±μ μ°κ²°νλ λ°©λ²μ μλ‘μ΄ λ¬Έμ λ₯Ό μ μνλ JWTκ° μμ΅λλ€. λΉμ°ν μ¬μ©μ μ΄λ¦/μνΈκ° λ μ μλνμ¬ ν ν°μ μ 곡ν©λλ€. (λ€νν JWTμ μ΄ 'WP-API' λ²μ μ ν ν° μλ‘ κ³ μΉ¨μ μ§μν©λλ€. λ리 μ¬μ©λλ λ€λ₯Έ JWT νλ¬κ·ΈμΈμ μ§μνμ§ μμ΅λλ€)
λλ (ν΅μ¬μμ) 'μ¦μ' μΈμ¦μ μν κ²¬κ³ ν 'ν€λ리μ€'/λͺ¨λ°μΌ ꡬνμ΄ μλ μνμμ νλ¬κ°λ κΈ°ν(λ° μκ°)μ μμ²λ μμ λ―Ώμ μ μμ΅λλ€.
λ΄ λͺ¨λ°μΌ μ±μ μμ μ μννκ³ λ§μ κ΄λ¦¬ κ΄λ ¨ νλͺ© λ° κ²½λ‘ κ°μ μ¬νμ μ§μνκΈ° μν΄ μ체 νλ¬κ·ΈμΈμ΄ νμν©λλ€. μ¬μ©μ μ§μ λΈλ‘ λ±. λ΄ μ± μ¬μ©μ/κ³ κ°μ΄ λ€λ₯Έ 'μμ ν μμ±λμ§ μμ' νλ¬κ·ΈμΈμ λ€μ΄λ‘λνμ¬ μ€μΉνμ§ μμλ λμμΌλ©΄ ν©λλ€.
λλ κ²¬κ³ ν(κ·Έλ¦¬κ³ '곡μμ μΈ') μ루μ μ΄ μ‘΄μ¬νκΈ°λ₯Ό λ°λ λΏμ λλ€.