λ³Έ κ°μ΄λλ Rails κ°λ°μλ€μ΄ OAuth 2.0μ 볡μ‘ν κ°λ μ μ΄ν΄νκ³ μ€μ μ ν리μΌμ΄μ μ μ±κ³΅μ μΌλ‘ μ μ©ν μ μλλ‘ λλ λ° μ€μ μ λ‘λλ€.
OAuth 2.0μ νμμ± λ° κΈ°λ³Έ κ°λ
- μ¬μ©μ μ격 μ¦λͺ μ μ§μ 곡μ νμ§ μκ³ λ νμ¬ μ ν리μΌμ΄μ μ΄ μ¬μ©μ κ³μ μ μ νλ 리μμ€μ μμ νκ² μ κ·Όν μ μλλ‘ νλ κ°λ°©ν νμ€ νλ‘ν μ½μ λλ€.
- νΉν Google, GitHubμ κ°μ λκ·λͺ¨ μΈλΆ μλΉμ€μμ ν΅ν© μ 보μκ³Ό νΈμμ±μ λμμ ν보νλ λ° νμμ μ λλ€.
Ruby on Railsμμμ ꡬν λ¨κ³
- νκ²½ μ€μ : Rails νλ‘μ νΈμ OAuth 2.0 ν΄λΌμ΄μΈνΈ λΌμ΄λΈλ¬λ¦¬ λλ κ΄λ ¨ Gem(μ: OmniAuthμ κ°μ)μ ν΅ν©νλ μ΄κΈ° μ€μ κ³Όμ μ μλ΄ν©λλ€.
- μΈμ¦ νλ¦: OAuth 2.0μ λ€μν μΈμ¦ κ·ΈλνΈ νμ (μ: κΆν λΆμ¬ μ½λ κ·ΈλνΈ)μ Rails μ ν리μΌμ΄μ μ μ μ©νλ λ°©λ²μ μ€λͺ ν©λλ€.
- ν ν° κ΄λ¦¬: μ κ·Ό ν ν°(Access Token) λ° κ°±μ ν ν°(Refresh Token)μ νλ, μ μ₯, κ°±μ λ° λ³΄μ κ΄λ¦¬μ λν μ§μΉ¨μ μ 곡ν©λλ€.
- μ¬μ©μ κ²½ν: λ‘κ·ΈμΈ/νμκ°μ νλ¦μ OAuth 2.0κ³Ό μ°λνμ¬ μ¬μ©μ μΉνμ μΈ μΈμ¦ κ²½νμ μ 곡νλ λ°©λ²μ λ€λ£Ήλλ€.
νλ‘λμ μμ€μ λͺ¨λ² μ¬λ‘
- 보μ κ°ν: CSRF(Cross-Site Request Forgery) λ°©μ§, μν νλΌλ―Έν°(state parameter) νμ©, ν΄λΌμ΄μΈνΈ λΉλ°(client secret) μμ κ΄λ¦¬ λ± λ³΄μ μ·¨μ½μ μ μ΅μννλ λ°©λ²μ κ°μ‘°ν©λλ€.
- μ€λ₯ μ²λ¦¬: OAuth νλ¦ μ€ λ°μν μ μλ λ€μν μ€λ₯ μν©μ ν¨κ³Όμ μΌλ‘ μ²λ¦¬νκ³ μ¬μ©μμκ² μ μ ν νΌλλ°±μ μ 곡νλ μ λ΅μ μ μν©λλ€.μ΄ κ°μ΄λλ₯Ό ν΅ν΄ Rails κ°λ°μλ€μ OAuth 2.0μ νμ©νμ¬ κ²¬κ³ νκ³ μμ ν μΈμ¦ λ° κΆν λΆμ¬ μμ€ν μ ꡬμΆν μ μλ μ€μ§μ μΈ μλμ ν보νκ² λ κ²μ λλ€.