OAuthλ μΈν°λ· μ¬μ©μκ° μμ μ λΉλ°λ²νΈλ₯Ό μ 3μμκ² λ
ΈμΆνμ§ μκ³ νΉμ μΉμ¬μ΄νΈλ μ ν리μΌμ΄μ
μ μ μ₯λ κ°μΈ μ 보μ λν μ κ·Ό κΆνμ μμ νκ² λΆμ¬νκΈ° μν΄ μ€κ³λ μΈκ°(Authorization) νλ μμν¬μ΄λ€.
λ§μΉ νΈν
μμ½ μ λ°λ μΉ΄λ ν€μ κ°μ΄ μΉ΄λ ν€ μμ²΄κ° μ΄μ©μμ μ λΆμ¦(ID/PW)μ μλμ§λ§ νΉμ λ°©(리μμ€)μ λ€μ΄κ° μ μλ κΆνμ μ¦λͺ
νλ κ²κ³Ό κ°λ€.
OAuthλ λͺ¨λ°μΌ νκ²½μ κΈμ±μ₯κ³Ό 보μ μꡬμ¬νμ λ³νμ λ§μΆ° 1.0μμ 2.0μΌλ‘ μ§ννμλ€. λ λ²μ μ ꡬ쑰μ μ°¨μ΄κ° ν¬λ©° μνΈ νΈνλμ§ μλλ€.
OAuth 1.0 (μ΄κΈ° νμ€)
2007λ
νΈμν°μ κ΅¬κΈ λ±μ΄ μ£Όλνμ¬ λ
Όμλ₯Ό μμνκ³ 2010λ
RFC 5849λ‘ νμ€νλμλ€.
OAuth 2.0 (νλ νμ€)
1.0μ 볡μ‘μ±κ³Ό νκ³λ₯Ό ν΄κ²°νκΈ° μν΄ 2012λ
RFC 6749λ₯Ό ν΅ν΄ λ°νλμλ€. νμ¬κΉμ§λ μ μΈκ³μ μΈ μ
κ³ νμ€μΌλ‘ μ리 μ‘κ³ μλ€.
OAuth 2.0 νλ μμν¬λ μμ€ν
μ κ΅¬μ± μμλ₯Ό λ€μμ λ€ κ°μ§ μν λ‘ μ μνλ€.
Resource Owner (리μμ€ μμ μ): μμ μ μ 보μ λν μ κ·Ό κΆνμ λΆμ¬νλ μ¬μ©μ
Client (ν΄λΌμ΄μΈνΈ): μ¬μ©μμ 리μμ€μ μ κ·Όνλ €λ μ 3μ μ ν리μΌμ΄μ
Resource Server (리μμ€ μλ²): μ¬μ©μμ 보νΈλ λ°μ΄ν°λ₯Ό νΈμ€ν
νλ μλ² (Google Drive, Kakao Profile)
Authorization Server (μΈκ° μλ²): μ¬μ©μμ λμλ₯Ό νμΈνκ³ ν΄λΌμ΄μΈνΈμ Access Tokenμ λ°κΈνλ μλ²
OAuth 2.0μ μΈκ°λ₯Ό μν νλ μμν¬λ‘ μ€κ³λμκΈ° λλ¬Έμ μ¬μ©μκ° λꡬμΈμ§ νμΈνλ μΈμ¦ κΈ°λ₯μ νμ€μ ν¬ν¨λμ΄ μμ§ μμλ€. μ΄λ° νκ³λ₯Ό 보μνκΈ° μν΄ 2014λ
OAuth 2.0 νλ‘ν μ½ κ³μΈ΅ μμ ꡬμΆλ μ μ νμΈ νμ€μ΄ OIDCμ΄λ€.
OIDCλ OAuth 2.0μ νλ¦μ κ·Έλλ‘ κ³μΉνλ©΄μλ μ¬μ©μμ μ μ μ 보λ₯Ό λ΄μ ID Tokenμ μΆκ°λ‘ λ°ννλ€λ μ μ΄ ν΅μ¬μ΄λ€.
ν΄λΌμ΄μΈνΈκ° μΈμ¦ μμ² μ scope λ§€κ°λ³μμ openidλ₯Ό ν¬ν¨νλ©΄ μλ²λ Access Tokenκ³Ό ν¨κ» ID Tokenμ λ°κΈνλ€. μ΄ ν ν°μ JWT νμμ μ¬μ©νμ¬ μ¬μ©μμ μ μ μ 보λ₯Ό ꡬ쑰ννλ€.
ν΄λΌμ΄μΈνΈλ λ°κΈλ°μ ID Tokenμ μ§μ ν΄λ
νμ¬ μ¬μ©μμ κ³ μ μλ³μ(sub), μ΄λ¦, μ΄λ©μΌ λ±μ μ 보λ₯Ό μ¦κ° νμΈν μ μλ€.
κΈ°μ‘΄ OAuth 2.0μμλ μ¬μ©μ μ 보λ₯Ό μ»κΈ° μν΄ Access Tokenμ μ¬μ©νμ¬ μ μ μ 보 APIλ₯Ό μΆκ°λ‘ νΈμΆν΄μΌ νμΌλ OIDCλ ν ν° μ체μ μ 보λ₯Ό ν¬ν¨νκ³ μμ΄ ν΅μ νμλ₯Ό μ€μ¬μ€λ€.
λν μλΉμ€ μ 곡μλ€μ΄ λμΌν OIDC κ·κ²©μ λ°λ₯΄λ―λ‘ κ°λ°μλ νμ€νλ λ°©μμΌλ‘ λ€μν νλ«νΌμ μ μ μ 보λ₯Ό μ²λ¦¬ν μ μμ΄ μ¬λ¬ μλΉμ€μμ νλμ κ³μ μΌλ‘ λ‘κ·ΈμΈ μνλ₯Ό μ μ§νλ λ¨μΌ λ‘κ·ΈμΈ(SSO) μμ€ν
ꡬμΆμ νμ κΈ°μ λ‘ μ리 μ‘μλ€.
