Oauth (Open Authorization)
Oauthλ νμ¬ μλΉμ€ κ°μ μΈμ¦μ μ 곡νλ κ²μ λν νμ€ νλ‘ν μ½μ΄λ€.
Open Authorizationμ μΆμ½μ΄λ€.
μ¬μ΄ μλ₯Ό λ€μλ©΄, λνμ μΌλ‘ SNS λ‘κ·ΈμΈ κ°μ μΈλΆ λ‘κ·ΈμΈ κ΅¬μ‘°κ° Oauth ꡬ쑰λ₯Ό λ°λ₯΄λ μμ€ν νν μ€ νλλ€.
Oauthκ° μ겨λκ² λ λ°°κ²½, λ°μ μ¬μ κ·Έ ꡬ쑰μ λν΄μ κ°λ΅νκ² λ€λ€λ³΄κ² λ€.
Oauthμ λ±μ₯ λ°°κ²½
μμ μλ μλΉμ€ κ° μ°λμ΄ νμν κ²½μ° λ§€μ° λ¬΄μνκ³ κ³Όκ²©ν λ°©λ²μΌλ‘ ν΄κ²°μ νμλ€.
μλ₯Ό λ€μ΄, λ΄κ° λ§λλ μλΉμ€μμ νΈμν°μ μ¬μ©μ μ 보λ₯Ό κ°μ Έμ¬ νμκ° μλ€κ³ κ°μ ν΄λ³΄μ.
κ·ΈλΌ κ·Έλ₯ μ¬μ©μμκ² νΈμν°μ ID:Passwordλ₯Ό λ΄ μλΉμ€μ μ
λ ₯νλλ‘ ν λ€μμ κ·Έκ±Έ λ°κ³ λ‘κ·ΈμΈμ ν΄μ μ²λ¦¬ν κ²μ΄λ€.
λΉμ°ν μ΄ λ°©μμ 보μμ μΌλ‘λ, μ¬μ©μ νΈμμ± μμ€μμλ λ§€μ° λμ°ν λ°©λ²μ΄λ€.
μ΄ λ°©μμ λν λ¬Έμ λ₯Ό μ¬κ°νκ² μΈμ§ν μμ μ, 2006λ
, νΈμν°μλ€.
Ma.gnoliaλΌλ μλΉμ€μμ νΈμν°μ μ¬μ©μ μ 보λ₯Ό μ°λν΄μ μμ¬ μλΉμ€μ νμ©νλ €κ³ νλλ°, ν¨μ€μλλ₯Ό λ°μμ μ²λ¦¬νλ μ’ μλλ€ μΆμ΄μ νμ€μμ λ§λ€μ΄λ³΄μλ μ΄μΌκΈ°κ° λμ¨ κ²μ΄λ€.
κ·Έλ κ² ν΄μ νΈμν°μ μ£Όλλ‘ λμ¨ κ²μ΄ OAuthλΌλ νμ€ νλ‘ν μ½μ΄λ€.
OAuth ν΅μ¬ μ리
OAuthμ ν΅μ¬ κ·Όκ°μ ν¨μ€μλλ₯Ό λ ΈμΆνμ§ μμ μ±λ‘ νμ¬κ° λ°μ΄ν°μ μ κ·Όν΄μΌ νλ€λ κ²μ΄λ€.
κ·Όλ° λλ체 μ΄λ»κ² νλ©΄ νμ¬κ° ν¨μ€μλ μμ΄ μΈμ¦μμ€ν
μ μ¬μ©ν μ μμκΉ?
ν¨μ€μλλ ν ν°μ΄λ , λκ°μ μΈμ¦ μλ¨μ μ λ¬λ°μ§ λͺ»νλ€λ©΄ μ λ’° κ°λ₯ν ννλ‘ μμ€ν
μ ꡬμ±νλ κ²μ λΆκ°λ₯ν μΌμ΄λ€.
κ·Έλμ λμ¨ ν΄κ²°μ±
μ... κ·Έλ₯ μΆκ°λ‘ μμ ν¨μ€μλλ₯Ό λ§λ€μ΄μ μ΄λ° μ©λλ‘λ§ μΈ μ μκ² νμλ κ²μ΄μλ€.
κΈ°μ‘΄ ν¨μ€μλμ λΉν΄μ μλͺ
μ΄ μ§§κ³ , μΌνμ±μ΄κ³ , μ κ·Ό λ²μ λ±μ μ νν μ μλ€λκ² λ€λ₯Ό λΏμ΄λ€.
OAuth flowλ λλ΅ λ€μκ³Ό κ°μ κ΅¬μ‘°λ‘ κ΅¬νλλ€.
λ¨Όμ μ΅μ’
μ μ μκ² νΈμν° λ‘κ·ΈμΈμ°½μ λμ°κ³ , μ¬μ©μ μ 보λ₯Ό λκΈΈ μ μλ€λ κ²λ λμλ₯Ό λ°λλ€.
λμκ° μλ£λλ©΄,
νΈμν°κ° μ°λμ μν μΌμ’
μ "μμ ν ν°"μ λ°κΈν΄μ€λ€.
μ΄ μμ ν ν°μ 곡μ μ©μ΄λ μΈκ° μ½λ(authorization code)λ€.
μ΄ μμ ν ν°μ λμ²΄λ‘ νλ² μ°λ©΄ μ¦μ λ§λ£λλ©°, μ°μ§ μλλΌλ λͺλΆ μ λλ©΄ λ§λ£λκ² λ§λ€μ΄μ Έμλ€.
κ·Έλ¬λ©΄ νμ¬ μλΉμ€λ μΈκ° μ½λλ₯Ό κ°μ Έλ€κ° λ€μ μ λλ‘ μΈ μ μλ "μ‘μΈμ€ ν ν°"μ λ°κΈλ°λλ€.
μ΄ "μ‘μΈμ€ ν ν°"μ΄ μλ€λ©΄ μ΄μ νμ¬ μλΉμ€λ μ΄κ±Έ κ°μ Έλ€κ° μ¬μ©μμ μ 보λ₯Ό μ‘°νν μ μλ€.
μ΄λ₯Ό ν΅ν΄μ μ¬μ©μμ μꡬ ν¨μ€μλλ₯Ό λ°μ§ μκ³ λ, λΉκ΅μ μ μ°νκ³ μμ ν ννλ‘ μ¬μ©μ μ 보μ μ κ·Όν μ μλ κ²μ΄λ€.
νλλ‘ μ 리λ κ·Έλ¦Ό
μ°Έκ³ λ‘ μ‘μΈμ€ν ν°μΌλ‘ μ¬μ©μ μ 보λ₯Ό μ‘°ννλ κ²μ OAuth λͺ
μΈμλ ν¬ν¨λμ§ μλλ€.
그건 OpenIDμ μμμ΄λ€.
ν ν°κ³Ό λ§λ£
μ΄ λ³΄μ μμ€ν
μ ν΅μ¬μ λ§λ£λ€.
ν ν°(ν¨μ€μλ)κ° μ μΆλλλΌλ μλͺ
μ΄ μ‘΄μ¬νλ€λ©΄ μ
μ©μ λΉν κ°λ₯μ±μ΄ νμ ν μ€μ΄λ€κΈ° λλ¬Έμ΄λ€.
OAuthμλ μλͺ μ΄ λ€λ₯Έ μ΄ 3κ°μ§μ ν ν°μ΄ μ‘΄μ¬νλ€. μ΄ κ³μΈ΅νλ₯Ό ν΅ν΄μ 곡격 κ°λ₯ν μ§μ μ μ΅μννλ κ²μ΄λ€.
1. authorization code
authorization codeλ μμμ μΈκΈνλ―μ΄, μ΅μ΄ μ°λμ μ¬μ©λλ μμ μ°λ ν ν°μ΄λ€.
λ³΄ν΅ λ¦¬λλ μ
μ ν΅ν΄μ νμ¬ μλΉμ€μ μ λ¬νκ³€ νλ€.
λμ²΄λ‘ 5λΆ-10λΆ μ λμ μ§§μ μλͺ
μ κ°μ§λ κ²μ΄ νΉμ§μ΄λ©°, νλ² μ¬μ©νλ©΄ μ¦μ λ§λ£λμ΄μΌ νλ€.
**2. access token **
μ΄κ²λ μμ ν¨μ€μλμ μΌμ’
μ΄λ€. μ΄κ² μμΌλ©΄ νμ¬ μλΉμ€λ APIμ ν ν°μ λ΄κ³ μ¬μ©ν΄μ ν΄λΉ Userμ μ 보λ₯Ό μ‘°νν μ μλ€.
μ΄κ±΄ μλͺ
μ κ°μ ΈμΌ νλ©°, μλͺ
μ΄ λ€ν λκΉμ§λ λ°λ³΅μ μΌλ‘ μ¬μ©μ΄ κ°λ₯νλ€.
μλͺ
μ λ± μ ν΄μ Έμμ§ μμλ°, λμ²΄λ‘ νμκ° μ λκ° μΌλ°μ μ΄λ€.
κ·Έλ¬λ©΄ access tokenμ΄ λ§λ£λλ©΄ μ΄λ»κ² ν΄μΌν κΉ?
κ·Έλλ§λ€ μ¬μ©μμκ²μ μλ‘ μΈκ° μ½λλ₯Ό λ°λ κ²λ λ°©λ²μ΄κΈ΄ νλ°, κ·Έκ±Έλ‘λ νκ³κ° μλ€. κ·Έλ΄λ νμν κ²μ΄ refresh tokenμ΄λ€.
3. refresh token (optional)
refresh tokenμ access tokenμ λ°κΈν μ μλ μμ κ°λ
μ ν¨μ€μλλ€.
access tokenλ³΄λ€ μλͺ
μ΄ κΈΈλ©°, λ³΄ν΅ νλ¬μμ 1λ
μ λλ₯Ό λ§λ£ κΈ°νμΌλ‘ μ‘λλ€.
refresh tokenμ μλͺ
μ λλ¦¬κ² ν μ§λ μ νμ΄λ€.
μ°Έκ³ λ‘ μ΄κ±΄ OAuthμ νμ μ€νμ μλλ€. μλ κ²λ€λ μλ€.
Oauth 1 (2007)
Oauth 1μ 2007λ
μ λ§λ€μ΄μ§ μ΅μ΄ λ²μ μ΄λ€. νμ¬λ 보μ μ·¨μ½μ μ΄ λ€μνκ² λ§μ΄ μ§μ λΌμ νκΈ°λ μνλ€.
ν μμ μμ Oauth 1λ₯Ό μ§μνλ providerλ μ¬μ€μ μλ€.
λ¬Έμ
- Access Tokenμ λ§λ£ κΈ°νμ΄ μ€νμ λͺ μλμ§ μμλ€. (λ§λ£κ° μλ¬΄κ° μλμμ)
- κΈ°λ₯ μ체λ νμ₯μ±μ΄ λ€μ λ¨μ΄μ‘κ³ , λ§€λ² μμ²λ§λ€ μλͺ μ ν¬ν¨νλ κ²μ΄λΌμ ꡬν 볡μ‘λκ° λμλ€.
- Session Fixation μ·¨μ½μ μ΄ μ‘΄μ¬νλ€. (ν¨μΉ λ²μ OAuth 1.0aμμ ν΄κ²°λκΈ΄ ν¨)
Oauth 2 (2012)
κ·Έλμ μ°μ¬κ³‘μ λμ OAuth 2λ₯Ό λ€μ λ§λ€μλ€.
ν μμ μμλ μμ°ν νμ€μ΄κ³ , λλΆλΆμ providerλ€μ OAuth 2 νμ€μ λ§μΆ°μ μλΉμ€λ₯Ό μ 곡νκ³ μλ€.
κ°μ
- μ΄μ μ μ‘΄μ¬νλ λ§μ μ·¨μ½μ μ κ°μ νλ€.
- HTTPSκ° νμμ΄κΈ° λλ¬Έμ 볡μ‘νκ² μλͺ μ²λ¦¬νλ©° νΈλν½ ν‘λ Ήμ κ±±μ ν νμκ° μ¬λΌμ‘λ€. μλͺ μ΄ μ κ±°λμ΄μ ꡬν κ΅¬μ‘°κ° κ°λ¨ν΄μ‘λ€.
- λ¨μν ν ν° κΈ°λ°μΌλ‘λ§ μνΈμμ©ν μ μκ² μ μνκΈ° λλ¬Έμ, ꡬνμ΄ λ¨μνκ³ νμ₯μ΄ μμ λ‘λ€. OpenID ConnectλΌλ ν΅ν© λ μ΄μ΄λ μ΄ λλΆμ λμ¨ κ²μ΄λ€.
OpenID Connect
ν μμ μμλ OAuth2 λ¨λ μΌλ‘ μ¬μ©νμ§λ μκ³ , ID Token κ°λ μ λ§λ OIDCλΌλ μ€κ³ ꡬ쑰λ₯Ό λλΆλΆ μ±ννλ€. ν¬ν¨κ΄κ³λΌμ λ¬λΌμ§κ±΄ λ³λ‘ μκΈ΄ νλ€.
μμΈν λ΄μ©μ λ³λ ν¬μ€νΈλ₯Ό μ°Έμ‘°νλ€.
https://blog.naver.com/sssang97/224084290003
μ°Έμ‘°
https://oauth.net/2/
https://www.upguard.com/blog/oauth