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?