2. Authentication - NeoSmartpen/neolab-data-platform GitHub Wiki
κ°μ
NDPμ μλΉμ€μ 리μμ€μ μ κ·Όνκ³ μ¬μ©νλ €λ©΄ μΈμ¦ μ μ°¨λ₯Ό κ±°μ³μΌ ν©λλ€. NDPμ μΈμ¦μ ν ν° κΈ°λ°μ μΈμ¦ λ°©μ(JWT)μ κΈ°λ°μΌλ‘ ν©λλ€.
μΈμ¦μ μν κΈ°λ³Έ μ μ°¨λ λ€μκ³Ό κ°μ΅λλ€.
1. NDP Developer Centerμμ μΈμ¦μλ₯Ό λ°κΈ λ°μ΅λλ€.
2. μ ν리μΌμ΄μ
μ λ°κΈ λ°μ μΈμ¦μμ νμμ μ¬μ©μ(νμ) λ‘κ·ΈμΈμΌλ‘ NDP μΈμ¦ μλ²μμ μΈμ¦ μ½λ(Authorization code)λ₯Ό λ°κΈ λ°μ΅λλ€.
3. μ ν리μΌμ΄μ
μ μΈμ¦ μ½λλ‘ NDP μΈμ¦ μλ²μμ μ κ·Ό ν ν°(Access Token)μ λ°κΈ λ°μ΅λλ€.
4. μ ν리μΌμ΄μ
μ λ°κΈ λ°μ μ κ·Ό ν ν°μΌλ‘ NDPμ 리μμ€μ μλΉμ€λ₯Ό μ΄μ©ν©λλ€.
μ¬μ©μ(νμ) λ¨μ μλΉμ€λ₯Ό μ¬μ©νκΈ° μν μΈμ¦μΌλ‘ NDPλ 1) NDP μ체 λ‘κ·ΈμΈμ ν΅ν μΈμ¦κ³Ό 2) μΈλΆ μλΉμ€(ꡬκΈ, μ ν λ±)μ λ‘κ·ΈμΈ APIλ₯Ό ν΅ν μΈμ¦ λ κ°μ§λ₯Ό λͺ¨λ μ§μν©λλ€.
μ ν리μΌμ΄μ
μμλ NDPμμ μ 곡νλ μλΉμ€λ‘ λ³΄λ€ νΈλ¦¬νκ² λ‘κ·ΈμΈ κΈ°λ₯μ ꡬννκ³ , μ¬μ©μλ₯Ό μΈμ¦νμ¬, νμ μ 보λ₯Ό μ‘°νν μ μμ΅λλ€.
μ 체 ꡬ쑰λ
NDPλ μλΉμ€ λΆλ₯μ λ°λΌ μΈμ¦ μ μ°¨κ° λ€λ¦ λλ€. λ€μμ μΈμ¦ ꡬ쑰λ₯Ό κ°λ΅νκ² ννν κ·Έλ¦Όμ λλ€.
μ¬μ©μ(νμ) λ¨μ μλΉμ€
- μ체 λ‘κ·ΈμΈ μΈμ¦
- μμ λ‘κ·ΈμΈ μΈμ¦
리μμ€μ€λ λ¨μ μλΉμ€
μ©μ΄ Β· μμ μ€λͺ
-
μΈμ¦μ (Credentials)
μΈμ¦μλ NDPμ μλΉμ€ λ° λ¦¬μμ€μ μ κ·ΌνκΈ° μν μ격 μ¦λͺ μμ λλ€. NDPλ μΈμ¦μλ₯Ό ν΅ν΄ μΈμ¦λ μ¬μ©μμμ νμΈν©λλ€. 리μμ€μ€λλ NDP Developer Centerμμ μΈμ¦μλ₯Ό λ°κΈ λ°μ μ μμ΅λλ€. 리μμ€μ€λλ ν μ ν리μΌμ΄μ λ΄μ μ¬λ¬ κ°μ μΈμ¦μλ₯Ό μμ±ν μ μμ΅λλ€. κ·Έλ¦¬κ³ κ° μΈμ¦μλ§λ€ API μ¬μ© λ²μ(Scope)μ 리μμ€ μ κ·Ό κΆν(Authority)μ λ€λ₯΄κ² λΆμ¬ν μ μμ΅λλ€.μΈμ¦μλ μλΉμ€ μΈμ¦ λ¨μμ λ°λΌ ν¬κ² λ κ°μ§λ‘ λλ©λλ€.
-
μ¬μ©μ μΈμ¦μ
μ¬μ©μ(νμ) λ¨μ μλΉμ€ μΈμ¦μμ μ¬μ©ν©λλ€. ν΄λΉ μλΉμ€λ μ ν리μΌμ΄μ μ μν μλΉμ€λ‘, μ ν리μΌμ΄μ μ¬μ©μμ λ‘κ·ΈμΈμ΄ νμν©λλ€. λ°λΌμ, μ ν리μΌμ΄μ μ¬μ©μλ₯Ό λ¨μλ‘ νλ μ¬μ©μ μΈμ¦μλ₯Ό λ°κΈ λ°μμΌ ν©λλ€.μ¬μ©μ μΈμ¦μλ λ κ°μ§λ‘ λλ©λλ€.
- μ체 μΈμ¦μ (OAuth2.0 Credentials) : NDP μ체 λ‘κ·ΈμΈμΌλ‘ μ κ·Ό ν ν°μ λ°μ μ μλ μΈμ¦μμ λλ€. NDPμ μΈμ¦ μλΉμ€λ OAuth 2.0μ κΈ°λ°μΌλ‘ ν©λλ€.
- μΈλΆ μΈμ¦μ (External Credentials) : μΈλΆ(ꡬκΈ, μ ν λ±)μ λ‘κ·ΈμΈ μλΉμ€λ₯Ό μ¬μ©νκΈ° μν΄ μ»μ μΈμ¦μ(Credentials)λ‘ NDPμ μ κ·Ό ν ν°μ λ°μ μ μλ μΈμ¦μμ λλ€. NDP Developer Centerμμ μΈμ¦μλ₯Ό μμ±ν λ, μΈλΆ μλΉμ€μμ λ°κΈ λ°μ μΈμ¦μμ μ 보λ₯Ό ν¨κ» μ λ ₯ν΄μΌ ν©λλ€.
-
μλΉμ€ μΈμ¦μ
μλΉμ€ λ¨μμ μΈμ¦μμ μ¬μ©ν©λλ€. ν΄λΉ μλΉμ€λ 리μμ€μ€λκ° μ§μ μΈμ¦νκ³ μ¬μ©νλ μλΉμ€λ‘, μ¬μ©μ(νμ)μ λ‘κ·ΈμΈ μμ΄ μλΉμ€μ μ κ·Όν μ μμ΅λλ€. λ°λΌμ 리μμ€μ€λλ₯Ό λ¨μλ‘ νλ μλΉμ€ μΈμ¦μ(Service Credentials)λ₯Ό λ°κΈ λ°μ΅λλ€. μ΄λ¬ν μΈμ¦μλ λ‘κ·ΈμΈ μΈμ¦μ΄ μμ΄ μλΉμ€μ μ κ·Όν μ μκΈ° λλ¬Έμ, μ μΆλμ§ μλλ‘ λμ± μ κ²½μ¨μΌ ν©λλ€.
-
-
API λ²μ? λ²μ? (Scope)μ κΆν (Authority)
λ²μλ μΈμ¦μκ° νΈμΆν μ μλ APIμ λ²μμ λλ€. κΆνμ μΈμ¦μκ° μ κ·Όν μ μλ 리μμ€λ₯Ό λνλ λλ€. μλ₯Ό λ€λ©΄, μ¬μ©μ λ°μ΄ν°λ₯Ό μ‘°ννλ userdata.read, μμμ κ΄λ¦¬νλ paper.ownerκ° μμ΅λλ€. 리μμ€μ€λλ μΈμ¦μλ₯Ό μμ±ν λ λ²μμ κΆνμ μ ννμ¬ μμ±ν΄μΌ ν©λλ€. λ²μμ κΆν μ€ μΌλΆλ λ€μ€λ©μ μΉμΈμ΄ νμν μ μμ΅λλ€. 리μμ€μ€λκ° μ ννμ§ μμκ±°λ λ€μ€λ©μμ μΉμΈνμ§ μμ λ²μμ APIλ νΈμΆν μ μμ΅λλ€. -
OAuth 2.0
OAuth 2.0μ μΈμ¦κ³Ό κΆν λΆμ¬λ₯Ό μν΄ μ¬μ©νλ νμ€ νλ‘ν μ½μ λλ€. OAuth 2.0μ μ 3μ μ±μ΄ μμμ μμ μμΈ μλΉμ€ μ¬μ©μ(νμ)λ₯Ό λμ νμ¬ μλΉμ€λ₯Ό μμ²ν μ μλλ‘ μμ μ κ·Ό κΆνμ μμνλ λ°©λ²μ λλ€. (μΆμ² : κΈμ΅λ³΄μμ "OAuth 2.0 κ°μ λ° λ³΄μ κ³ λ €μ¬ν" 보μμ°κ΅¬λΆ-2015-030) -
μΈμ¦ μ½λ(Authorization Code)
μΈμ¦ μ½λλ μ ν리μΌμ΄μ μμ NDPμ μ κ·Ό ν ν°μ μ»λ λ° μ¬μ©νλ μ½λμ λλ€. μ ν리μΌμ΄μ μμ NDPμκ² μΈμ¦μ μμ²νλ©΄, NDPλ μ ν리μΌμ΄μ μμ μ¬μ©μ λ‘κ·ΈμΈμ μμ²ν©λλ€. μ¬μ©μμ μμ΄λ, ν¨μ€μλ κ²μ¦κ³Ό μ¬μ©μμ κΆν λμκ° μ±κ³΅μ μΌλ‘ λλλ©΄, μΈμ¦μλ₯Ό λ°κΈ λ°μ λ λ±λ‘ν redirect_uriλ‘ μΈμ¦ μ½λλ₯Ό μ μ‘ν©λλ€. -
μ κ·Ό ν ν°(Access Token)κ³Ό 리νλ μ ν ν°(Refresh Token)
μ κ·Ό ν ν°μ μΈμ¦μ μ±κ³΅νλ©΄ NDPμμ μ ν리μΌμ΄μ μκ² λ³΄λ΄λ ν€μ λλ€. μ ν리μΌμ΄μ μμ NDPμ APIλ₯Ό νΈμΆν λ, μμ² ν€λμ μ κ·Ό ν ν°μ ν¨κ» 보λ΄μΌ ν©λλ€. NDPλ μ κ·Ό ν ν°μ κ²μ¦νμ¬ NDP μλΉμ€λ₯Ό μ¬μ©ν κΆνμ λΆμ¬ν©λλ€. μ΄λ¬ν μ κ·Ό ν ν°μ μλͺ μ΄ μμ΅λλ€. 리νλ μ ν ν°μ μ ν리μΌμ΄μ μμ μΌμ κΈ°κ° λμ μΈμ¦μ κ±°μΉμ§ μμλ μ κ·Ό ν ν°μ κ°±μ ν μ μλ μν μ ν©λλ€. 리νλ μ ν ν°μ ν΅ν΄ μ¬μ©μλ λ§€λ² λ‘κ·ΈμΈνμ§ μμλ μ κ·Ό ν ν°μ λ°κΈ λ°μ μ μμ΅λλ€. λ¨, μΈμ¦ μ μ°¨μ μ¬μ©μμ λ‘κ·ΈμΈμ΄ νμνμ§ μμ 리μμ€μ€λ λ¨μ μλΉμ€μμλ 리νλ μ ν ν°μ΄ λ°κΈλμ§ μμ΅λλ€.