OAuth (Open Authorization)
Open : κ°λ°©ν
Authorization : μΈκ°
κ°λ°©μ μΌλ‘ μ΄ν리μΌμ΄μ
(μλ²) κ°μ μ¬μ©μ μ 보μ λν μ κ·Ό νλ½μ νλ κ²
μ¬μ©μ μ 보μ μ κ·ΌνκΈ° μν κ°λ°©ν μΈμ¦ νμ€
β’
OAuth μ€ν λ¬Έμ
β’
OAuth κ΅¬μ± μμ
β¦
주체
βͺ
μ¬μ©μ
βͺ
μλ²
βͺ
μΈμ¦ μλ²
βͺ
리μμ€ μλ²
β¦
μ£Όμ μ 보
βͺ
μΈκ° μ½λ
βͺ
μ‘μΈμ€ ν ν°
βͺ
μ¬μ©μ μ 보
β’
OAuth μΈμ¦ κ³Όμ
OAuth μ€ν λ¬Έμ
μ΄ λ¬Έμλ "OAuth 2.0 μΈμ¦ νλ μμν¬"λ₯Ό μ μνλ©°, ν΄λΌμ΄μΈνΈκ° μμ μμ μμ μμμ μ κ·Όνλ λ°©λ²μ κ·μ ν©λλ€. μ΄ λ¬Έμλ OAuth 2.0 νλ‘ν μ½μ κΈ°μ μ μΈ μΈλΆ μ¬νμ μ€λͺ
νκ³ μμ΅λλ€.
OAuth κ΅¬μ± μμ
β’
주체
β¦
μ¬μ©μ
β¦
μλ²
β¦
μΈμ¦ μλ²
β¦
리μμ€ μλ²
β’
μ£Όμ μ 보
β¦
μΈκ° μ½λ
β¦
μ‘μΈμ€ ν ν°
β¦
μ¬μ©μ μ 보
주체
OAuth κ΅¬μ± μμμλ μ¬μ©μ, μλ², μΈμ¦ μλ², 리μμ€ μλ²κ° μμ΅λλ€. μ¬κΈ°μ μλ²λ μΈμ¦ μλ²μ λνμ¬ ν΄λΌμ΄μΈνΈκ° λλ μλ²μ
λλ€. μΌλ°μ μΌλ‘ ꡬκΈ, νμ΄μ€λΆ, μΉ΄μΉ΄μ€, λ€μ΄λ²κ° μΈμ¦ μλ²κ° λκ³ μ 3μ μΉ μ ν리μΌμ΄μ
μλ², μ¦ μ°λ¦¬κ° κ°λ°νλ μλ²κ° ν΄λΌμ΄μΈνΈμ
λλ€.
μ΄ κΈμμλ νΈμ μ μ¬μ©μ, μλ², μΈμ¦ μλ², 리μμ€ μλ² λΌλ μ©μ΄λ‘ μ¬μ©ν©λλ€.
(μ¦, ν΄λΌμ΄μΈνΈλ₯Ό κ·Έλ₯ μλ²λΌκ³ λΆλ₯΄κ² μ΅λλ€.)
μ¬μ©μ
μμμ μ£ΌμΈ.
μΈμ¦ μλ²μ μΈμ¦μ λ°μ μλ²μ μ¬μ©μ μ 보 μ κ·Ό κΆνμ μμνλ 주체
μΈμ¦ μλ²μ λ‘κ·ΈμΈν μ¬μ©μλ₯Ό λ§ν©λλ€.
μ¬κΈ°μ λ§νλ μμμ μ£Όλ‘ μ¬μ©μ μ 보λ‘, μμ΄λ, λλ€μ, μ΄λ©μΌ, νλ‘ν μ¬μ§ λ±μ΄ μμ΅λλ€.
μλ²
μ¬μ©μμκ² μ κ·Ό κΆνμ μμλ°μ μ¬μ©μ μ 보λ₯Ό μ¬μ©ν 주체
μλ²λ μ¬μ©μκ° λ‘κ·ΈμΈνλ©΄, μΈμ¦ μλ²λ‘λΆν° βμΈκ° μ½λβ λΌλ μμμ₯μ λ°κ³ , μ΄ μμμ₯μ κ°μ§κ³ κΈκ³ μ μ΄μ μΈ βμ‘μΈμ€ ν ν°βλ₯Ό μΈμ¦ μλ²μ μμ²ν©λλ€. κ·Έλ¦¬κ³ βμ‘μΈμ€ ν ν°βμ΄λΌλ μ΄ μ΄μ λ₯Ό κ°μ§κ³ μ¬μ©μ μ λ³΄κ° μλ κΈκ³ μΈ λ¦¬μμ€ μλ²μ μ¬μ©μ μ 보λ₯Ό μμ²νκ³ μλ΅λ°μ΅λλ€.
μΈμ¦ μλ²
μ¬μ©μκ° μμ²ν μΈμ¦μ μ²λ¦¬νμ¬, μλ²μκ² μΈκ° μ½λμ μΈμ¦ ν ν°μ λ°κΈν΄μ£Όλ μλ²
리μμ€ μλ²
μ¬μ©μ μ 보λ₯Ό μ μ₯ λ° μ 곡νλ μλ²
μ¬μ©μ μ λ³΄κ° κ΄λ¦¬λλ μλ²λ‘, μλ²κ° βμΈμ¦ ν ν°βμ΄λΌλ μ΄μ λ‘ μ¬μ©μ λμ μ¬μ©μ μ 보λ₯Ό μμ²νλ©΄, μλ²μκ² μ¬μ©μ μ 보λ₯Ό μ 곡ν΄μ£Όλ μλ²μ
λλ€.
μ£Όμ μ 보
μΈκ° μ½λ (Authorization Code)
μ¬μ©μκ° μΈμ¦ μλ²μ μΈμ¦(λ‘κ·ΈμΈ)νλ©΄,
μΈμ¦ μλ²κ° μλ²νν
λ°κΈ ν΄μ£Όλ μμμ₯ μν μ μ½λ
β’
μΈκ° μ½λλ 보μμμ μ΄μ λ‘ μ¬μ©μμ λΈλΌμ°μ λ₯Ό ν΅ν΄ μμ νκ² μ λ¬λ©λλ€.
β’
보ν΅μ ν΄λΌμ΄μΈνΈκ° μ¬μ©μλ₯Ό μΈμ¦λ°κ³ μ ν λ μ¬μ©λ©λλ€. μλ₯Ό λ€μ΄, μ¬μ©μκ° μλνν° μ ν리μΌμ΄μ
μ λ‘κ·ΈμΈνκ³ κΆνμ λΆμ¬ν λ, μΈκ° μ½λκ° μ¬μ©λ μ μμ΅λλ€.
β’
μΈκ° μ½λλ ν΄λΌμ΄μΈνΈκ° μΈμ¦ μλ²λ‘λΆν° μ‘μΈμ€ ν ν°μ μμ²ν λ μ¬μ©λ©λλ€.
OAuth μ λͺ©μ μ 리μμ€ μλ²μ μλ μ¬μ©μ μ 보λ₯Ό μλ²(ν΄λΌμ΄μΈνΈ)μ 곡μ νλ κ²μ
λλ€.
μ΄ λ, μ¬μ©μλ μ§μ 리μμ€ μλ²μ κ°μ μ¬μ©μ μ 보λ₯Ό κ°μ Έμμ μλ²μ μ 곡νμ§ μκ³ , μλ²κ° λμ μ¬μ©μ μ 보λ₯Ό κ°μ Έμ€λΌκ³ μν΅λλ€. μ¦, μ¬μ©μ μ 보λ₯Ό κ°μ Έμ€κΈ° μν κΆνμ μμν΄μ€λλ€.
μ¬μ©μκ° μλ²μ μ¬μ©μ μ 보μ μ κ·ΌνκΈ° μν κΆνμ μμν΄μ£Όλ μ μ°¨λ, μ¬μ©μκ° μΈμ¦ μλ²μμ μ 곡ν΄μ£Όλ λ‘κ·ΈμΈ νμ΄μ§(ꡬκΈ, νμ΄μ€λΆ, μΉ΄μΉ΄μ€, λ€μ΄λ² λ±)μ λ‘κ·ΈμΈνλ κ²μ
λλ€.
μ¬μ©μκ° μΈμ¦ μλ²κ° μ 곡ν΄μ€ λ‘κ·ΈμΈ νμ΄μ§μ λ‘κ·ΈμΈμ μ±κ³΅νλ©΄, μΈμ¦ μλ²λ μλ²μ μΈκ° μ½λλ₯Ό λ°κΈν΄μ€λλ€. μ΄ μΈκ° μ½λλ μλ²κ° μ¬μ©μ λμ μ¦λͺ
μλ₯Ό λ°κΈν μ μλ μμμ₯κ³Ό κ°μ μν μ ν©λλ€.
μ΄λ κ² μ¬μ©μλ μμ μ λμ ν΄μ μλ²κ° μμ μ μ¬μ©μ μ 보λ₯Ό κ°μ§κ³ μλ μΈμ¦ μλ²μ μ κ·Όνλ κΆνμ μμνκΈ° μν΄ μΈμ¦ μλ²μ λ‘κ·ΈμΈνμ¬, μΈμ¦ μλ²λ‘ νμ¬κΈ μλ²μκ² μΈκ° μ½λλ₯Ό λ°κΈν΄μ€ μ μκ² μΈμ¦ν©λλ€.
1.
μλ²μ μμ
λ‘κ·ΈμΈ λ²νΌ ν΄λ¦
2.
μλ²κ° μΈμ¦ μλ²μ μΈκ° μ½λ μμ²
3.
μ¬μ©μκ° λ‘κ·ΈμΈ νμ΄μ§μ λ‘κ·ΈμΈ
4.
μΈμ¦ μλ²κ° μΈκ° μ½λλ₯Ό μλ²μ λ°κΈ
μ΄ μ μ°¨λ λ§μΉ, λΆλͺ¨λ λμ λ΄κ° νμ λ³΅μ§ μΌν°μ κ°μ μΈκ° μ¦λͺ
μλ₯Ό λ°κΈνκΈ° μν μμμ₯μ μ°λ μΌκ³Ό λΉμ·ν©λλ€.
1.
λΆλͺ¨λ : βμμμΌ, νμ λ³΅μ§ μΌν°μ κ°μ μμμ₯ μμ λ°μμ€λ ΄~!β
2.
λ(μμ) : βμ μλ, μμμ₯ μμ μ’ μ£ΌμΈμ~!β
3.
곡무μ : βμ μ¬κΈ°μμ΅λλ€. μμμ₯ μμ±, λ³ΈμΈ μ λΆμ¦, λλ¦¬μΈ μ λΆμ¦ κ°μ Έμ€μΈμ~!β
4.
μ΄μ μμμ₯μ κ°μ§κ³ λΆλͺ¨λμ λμ ν΄μ μΈκ° μ¦λͺ
μλ₯Ό λ°κΈν μ μκ² λμμ΄μ.
μ‘μΈμ€ ν ν°(Access Token)
μ¬μ©μ μ λ³΄κ° μλ 리μμ€ μλ²μ μ κ·ΌνκΈ° μν μ΄μ
β’
μ‘μΈμ€ ν ν°μ ν΄λΌμ΄μΈνΈκ° 리μμ€ μλ²μ μ κ·Όν μ μλλ‘ κΆνμ λΆμ¬λ°μ νμ μ¬μ©λ©λλ€.
β’
μΈκ° μ½λλ₯Ό μ¬μ©νμ¬ μΈμ¦ μλ²λ‘λΆν° κ΅νλκ±°λ, ν΄λΌμ΄μΈνΈ μ격 μ¦λͺ
μ μ§μ μ¬μ©νμ¬ λ°μ μ μμ΅λλ€.
β’
μ΄ ν ν°μ ν΄λΌμ΄μΈνΈκ° νΉμ 리μμ€μ μ‘μΈμ€ν λ 리μμ€ μλ²μ μ 곡λ©λλ€.
μλ²λ μ¬μ©μμκ² κΆνμ μμ λ°μ κ²μ μ¦λͺ
νλ μΈκ° μ½λλ₯Ό κ°μ§κ³ μΈμ¦ μλ²μ μ‘μΈμ€ ν ν°μ μμ²ν©λλ€. μ΄ λ API KEY, redirect uri, client secret λ±μ μ 보λ ν¬ν¨νμ¬ μμ²ν©λλ€.
μΈμ¦ μλ²λ μλ²κ° λ³΄λΈ μμ² μ 보μμ μΈκ° μ½λμ μ¬λ¬ μ 보λ€μ νμΈνμ¬ μΈμ¦μ νκ³ μ‘μΈμ€ ν ν°μ λ°κΈν©λλ€. μλ²κ° μ‘μΈμ€ ν ν°μ λ°κΈ λ°μΌλ©΄ μ΄μ μλ²λ 리μμ€ μλ²λ‘ μ¬μ©μ μ 보λ₯Ό μμ²ν μ μμ΅λλ€.
1.
μλ²κ° μΈμ¦ μλ²μ μ‘μΈμ€ ν ν° μμ²
2.
μΈμ¦ μλ²κ° μλ²μ μ‘μΈμ€ ν ν° λ°κΈ
μ΄ κ³Όμ μ λ§μΉ, λΆλͺ¨λμ΄ μ¨μ€ μμμ₯κ³Ό λμ μ λΆμ¦, λΆλͺ¨λ μ λΆμ¦μ κ°μ§κ³ νμ λ³΅μ§ μΌν°μ κ°μ λΆλͺ¨λμ μΈκ° μ¦λͺ
μλ₯Ό λ리 λ°κΈ νλ κ³Όμ κ³Ό λΉμ·ν©λλ€.
μ¬μ©μ μ 보
리μμ€ μλ²μ μ μ₯λ λλ€μ, νλ‘ν μ¬μ§, μ΄λ©μΌ λ±μ μ¬μ©μ μ 보
μ¬μ©μμ νλ‘ν, μ΄λ―Έμ§, λ¬Έμ, λλ κΈ°ν κ΄λ ¨ λ°μ΄ν°λ₯Ό ν¬ν¨ν μ μμ΅λλ€. μ΄ μ 보λ μ¬μ©μμ κ³μ μ μ°κ²°λμ΄ μμΌλ©°, ν΄λΉ μ¬μ©μμ κΆνμ λ°λΌ λ€μν ννλ‘ μ μ₯λ μ μμ΅λλ€.
리μμ€ μλ²λ μ΄λ¬ν μ¬μ©μ μ 보λ₯Ό μμ νκ² λ³΄νΈνκ³ , μΈκ°λ ν΄λΌμ΄μΈνΈμκ²λ§ μ‘μΈμ€λ₯Ό νμ©νμ¬ μ¬μ©μμ κ°μΈμ 보λ₯Ό 보νΈν©λλ€. μΌλ°μ μΌλ‘ OAuth 2.0κ³Ό κ°μ νλ‘ν μ½μ μ¬μ©νμ¬ ν΄λΌμ΄μΈνΈκ° μΈκ°λ₯Ό λ°κ³ , κΆνμ λΆμ¬λ°μ νμλ§ λ¦¬μμ€ μλ²μ μ‘μΈμ€ν μ μμ΅λλ€.
μλ²λ μΈμ¦ μλ²λ‘λΆν° λ°κΈ λ°μ μ‘μΈμ€ ν ν°μΌλ‘ μ¬μ©μλ‘λΆν° μμλ μ격μ μ¦λͺ
μ λ°κ³ , 리μμ€ μλ²μ μ¬μ©μ μ 보λ₯Ό μμ²ν©λλ€. κ·Έλ¬λ©΄ 리μμ€ μλ²λ μ¬μ©μ μ 보λ₯Ό μλ²μ μλ΅ν©λλ€.
λ§μΉ¨λ΄ μλ²λ μ¬μ©μλ₯Ό λμ νμ¬ μ¬μ©μ μ 보λ₯Ό κ°μ Έμμ΅λλ€.
μ΄μ μ¬μ©μ μ 보λ₯Ό μ»μμΌλ μλ²λ βꡬκΈλ‘ νμκ°μ
β, βμΉ΄μΉ΄μ€λ‘ νμκ°μ
β κ³Ό κ°μ κΈ°λ₯μ ꡬννμ¬, μ¬μ©μκ° μμ
λ‘κ·ΈμΈμ ν΅ν΄ μ΅μ΄μλ μλμΌλ‘ νμ κ°μ
μ νκ³ μ΄νμλ μμ
λ‘κ·ΈμΈμΌλ‘ λ°λ‘ λ‘κ·ΈμΈμ ν μ μκ² μ§μν μ μμ΅λλ€.
μ΄ κ³Όμ μ λ§μΉ, μΈκ° μ¦λͺ
μλ‘ ?????
OAuth μΈμ¦ κ³Όμ
OAuth μΈμ¦ κ³Όμ μ μΌλ°μ μΌλ‘ μλμ κ°μ΅λλ€.
1.
μ¬μ©μκ° μλ²μ μμ
λ‘κ·ΈμΈ λ²νΌ ν΄λ¦
2.
μλ²κ° μΈμ¦ μλ²μ μΈκ° μ½λ μμ²
3.
μ¬μ©μκ° λ‘κ·ΈμΈ νμ΄μ§μ λ‘κ·ΈμΈ
4.
μΈμ¦ μλ²κ° μΈκ° μ½λλ₯Ό μλ²μ λ°κΈ
5.
μλ²κ° μΈμ¦ μλ²μ μ‘μΈμ€ ν ν° μμ²
6.
μΈμ¦ μλ²κ° μλ²μ μ‘μΈμ€ ν ν° λ°κΈ
7.
μλ²κ° 리μμ€ μλ²μ μ¬μ©μ μ 보 μμ²
8.
리μμ€ μλ²κ° μλ²μ μ¬μ©μ μ 보 μλ΅