2021-02-01(Mon)
νλͺ©
λ΄μ©
νμ΅ λ μ§
2021-02-01(μ)
νμ΅ μκ°
11:00~24:00
νμ΅ λ²μ λ° μ£Όμ
OAuth, devise, cookie
νμ΅ λͺ©ν
λ‘κ·ΈμΈ κΈ°λ₯μ ꡬννμ¬ μ΄ν λͺ¨λκΈ°λ₯μμ νμ©ν μ μλλ‘ νλ€.
λλ£ νμ΅ λ°©λ²
eunhkim, yohlee, sanam, jujeongλκ³Ό ν¨κ» λΌμ΄λΈμμ΄λ‘ νμ΄μ½λ©ν¨
μμΈ νμ΅ λ΄μ©
μ°μ μ£Όλ§κ° λλΆλΆμ 곡ν΅λͺ¨λμ λ§λ€μλ€κ³ μκ°νμΌλ λ‘κ·ΈμΈ κΈ°λ₯κΉμ§ λν΄μ ΈμΌ λΉλ‘μ κΈ°λ₯ λͺ¨λμ λλμ΄ κ°λ°ν μ μμ κ²μ΄λΌλ νλ¨μ΄ λ€μλ€. κ° λͺ¨λμμ νμ¬ νμ΄μ§μ μ μν 'current_user'κ° λꡬμΈμ§ νμΈν μ μμ΄μΌ κ·Έμ λ§λ λ·°λ₯Ό 보μ¬μ€ μ μκΈ° λλ¬Έμ΄λ€.
μ΄μ νμλ€κ³Ό νμ΄μ½λ©μ ν΅ν΄ λ‘κ·ΈμΈ κΈ°λ₯-μμ λ‘κ·ΈμΈ, 2μ°¨μΈμ¦μ ꡬννλ€.
λ‘κ·ΈμΈ
μ΄ κ³Όμ μμ 'λ‘κ·ΈμΈ' μν κ΄λ¦¬μ 3κ°μ§ λ°©λ²μ νμ΅νμλ€.
μΏ ν€
μΈμ
ν ν°
devise gemμ μ°λ©΄ μ½κ² ꡬνν μ μμΌλ, μλΈμ νΈ μꡬμ¬νλλ‘ SPAμ€λ½κ² μ ν리μΌμ΄μ μ λ§λ€μ΄μΌνλ€λ νλ¨νμ μ§μ λ‘κ·ΈμΈ/λ‘κ·Έμμ κΈ°λ₯μ ꡬννκΈ°λ‘ νμλ€. devise gemμ μ°λ©΄ μμ°μ€λ½κ² λ‘κ·ΈμΈ/λ‘κ·Έμμ μμ 'μλ‘κ³ μΉ¨'μ νκ² λλλ°, μ΄λ SPA μ€λ½μ§ μλ€λ κ².
κ²°κ³Όμ μΌλ‘ κ° λ°©λ²μ μ₯λ¨μ μ κ³ λ €νμ¬ 1μ°¨ λ‘κ·ΈμΈμ μΏ ν€λ‘ ꡬννμλ€.
μμ
λ‘κ·ΈμΈ
μμ λ‘κ·ΈμΈμ 42 apiμ OAuth μΈμ¦μ μ°Έκ³ νμ¬ κ΅¬ννμλ€.
κΉν μμ λ‘κ·ΈμΈλ ꡬννμλλ° κ΅³μ΄ νμκ° μλ€λ νλ¨νμ λΉΌλ²λ Έλ€.
2μ°¨ μΈμ¦
2μ°¨ μΈμ¦(two factor authentication)μ λν΄μ μκ²¬μ΄ λΆλΆνλλ°, 2μ°¨ μΈμ¦μ΄ 무μμΈμ§μ λν΄μ λ¨Όμ μ μν΄λ³΄μλ€.
2μ°¨ μΈμ¦μ λ¨μν 2λ² μ΄μ μΈμ¦νλ κ²μ΄ μλλΌ, μΈμ¦μ νκΈ° μν΄μ 2~3κ°μ§ μμλ₯Ό μ‘°ν©νμ¬ μΈμ¦μ νμΈνλ κ²μ λ»νλ€. μ΄ λ μΆκ°μ μΈ μμλ λλ¦λλ‘ νμ€νλ 3κ°μ§ μμκ° μ‘΄μ¬νλ€.
Knowledge Factor(μ¬μ©μκ° μκ³ μλ κ²)
ex) λΉλ°λ²νΈ, PIN(Personal Identification Number), ν¨ν΄, μ΄λ¦΄μ λ³λͺ λ±
Possession Factor(μ¬μ©μκ° μμ νκ³ μλ κ²)
ex) OTP tokn, μ€λ§νΈ μΉ΄λ, μ μ©μΉ΄λ, 체ν¬μΉ΄λ, ν΄λν°μΌλ‘ SMS λ¬Έμ λ°λ κ²½μ° λ±
Inherence Factor(μ¬μ©μ κ³ μ μ κ²)
ex) μ§λ¬Έ, νμ±μΈμ λ±
2~3κ°μ§ μμλ₯Ό μ‘°ν©ν΄μΌνλ€λ κ²μ΄ μ€μνλ€. λ§μ½ λΉλ°λ²νΈλ₯Ό νμΈν λ€μ μ΄λ¦΄μ λ³λͺ μ μ λ ₯νμ λ μΈμ¦ν΄μ€λ€λ©΄ 2μ°¨ μΈμ¦μΌκΉ? μλλ€. μ΄λ 'κ°ν μΈμ¦(Strong Authentication)'μ μνλ€κ³ ν μλ μκ² μ§λ§, Knowledge Factorλ§μ μ¬μ©νμ¬ μΈμ¦μ μ§ννμΌλ―λ‘ 2μ°¨ μΈμ¦μ΄ μλ κ²μ΄λ€.
μ΄μ μ°λ¦¬ νμ railsμ μ‘μ λ©μΌλ¬μ mailgun gemμ νμ©νμ¬ 2μ°¨ μΈμ¦μ ꡬννμλ€. μ¬μ€ mailgun gem λμ gmail κ³μ μ μμ±νμ¬ κ΅¬νμ μλν΄λ³΄μμΌλ, κ΅¬κΈ μΈ‘μμ λΉμ μμ μΈ λ©μΌ νμ©μ΄λΌκ³ κ°μ§νμλμ§ λͺλ² ν μ€νΈν κ²λ§μΌλ‘ μ΄λ©μΌ κ³μ μ΄ λΉνμ±νλλ λΆμμ¬κ° μμλ€;
λ‘κ·Έμμ
λ‘κ·Έμμμ μΏ ν€λ₯Ό μ΄κΈ°ννλ μμΌλ‘ ꡬνλμλ€. μλμ²λΌ 204 μνμ½λλ₯Ό λ°ννλ €νμΌλ μ€λ₯κ° λμ λ°©λ²μ μ°ΎμμΌνλλ°,
render nothing => true, :status => 204ꡬ문μ²λΌ renderλ₯Ό μ°λ λ°©μμ rails 5 κΉμ§λ§ μ ν¨νλ€λ κ²μ μμλλ€.def destroy id = cookies.encrypted[:service_id] return if not User.exists?(id) User.find(id).logout remove_session render nothing => true, :status => 204 endκ²°κ³Όμ μΌλ‘ rails6 μ΄μμμλ 컨νΈλ‘€λ¬μμ 204 λ΄μ©μ 보λ΄λ €λ©΄ μλμ²λΌ 보λ΄μΌνλ€.
render body: nil, :status => 204μλλ©΄
head :no_contentμ΄λ κ² λ³΄λ΄λ©΄ λλ€.
νμ΅ λ΄μ©μ λν κ°μΈμ μΈ μ΄ν
μν κ΄λ¦¬μ λν΄μ μ’ λ κΉκ² νμ΅ν μ μμ΄μ μ’μλ€. λ€μμλ ν ν°μ νμ©ν λ°©μμ μλν΄λ΄μΌκ² λ€.
λ€μ νμ΅ κ³ν
Appearance view ꡬν
Last updated
Was this helpful?