2021-02-01(Mon)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-02-01(์›”)

ํ•™์Šต ์‹œ๊ฐ„

11:00~24:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

OAuth, devise, cookie

ํ•™์Šต ๋ชฉํ‘œ

๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ดํ›„ ๋ชจ๋“ˆ๊ธฐ๋Šฅ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

eunhkim, yohlee, sanam, jujeong๋‹˜๊ณผ ํ•จ๊ป˜ ๋ผ์ด๋ธŒ์‰์–ด๋กœ ํŽ˜์–ด์ฝ”๋”ฉํ•จ

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

์šฐ์„  ์ฃผ๋ง๊ฐ„ ๋Œ€๋ถ€๋ถ„์˜ ๊ณตํ†ต๋ชจ๋“ˆ์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์œผ๋‚˜ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ๊นŒ์ง€ ๋”ํ•ด์ ธ์•ผ ๋น„๋กœ์†Œ ๊ธฐ๋Šฅ ๋ชจ๋“ˆ์„ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๋Š” ํŒ๋‹จ์ด ๋“ค์—ˆ๋‹ค. ๊ฐ ๋ชจ๋“ˆ์—์„œ ํ˜„์žฌ ํŽ˜์ด์ง€์— ์ ‘์†ํ•œ 'current_user'๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ๊ทธ์— ๋งž๋Š” ๋ทฐ๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด์— ํŒ€์›๋“ค๊ณผ ํŽ˜์–ด์ฝ”๋”ฉ์„ ํ†ตํ•ด ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ-์†Œ์…œ ๋กœ๊ทธ์ธ, 2์ฐจ์ธ์ฆ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.

๋กœ๊ทธ์ธ

์ด ๊ณผ์ •์—์„œ '๋กœ๊ทธ์ธ' ์ƒํƒœ ๊ด€๋ฆฌ์˜ 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•˜์˜€๋‹ค.

  1. ์ฟ ํ‚ค

  2. ์„ธ์…˜

  3. ํ† ํฐ

devise gem์„ ์“ฐ๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์„œ๋ธŒ์ ํŠธ ์š”๊ตฌ์‚ฌํ•ญ๋Œ€๋กœ SPA์Šค๋Ÿฝ๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค๋Š” ํŒ๋‹จํ•˜์— ์ง์ ‘ ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. devise gem์„ ์“ฐ๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ ์‹œ์— '์ƒˆ๋กœ๊ณ ์นจ'์„ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด๋Š” SPA ์Šค๋Ÿฝ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ.

๊ฒฐ๊ณผ์ ์œผ๋กœ ๊ฐ ๋ฐฉ๋ฒ•์˜ ์žฅ๋‹จ์ ์„ ๊ณ ๋ คํ•˜์—ฌ 1์ฐจ ๋กœ๊ทธ์ธ์€ ์ฟ ํ‚ค๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

์ฐธ๊ณ 

์†Œ์…œ ๋กœ๊ทธ์ธ

์†Œ์…œ ๋กœ๊ทธ์ธ์€ 42 api์˜ OAuth ์ธ์ฆ์„ ์ฐธ๊ณ ํ•˜์—ฌ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

๊นƒํ—™ ์†Œ์…œ ๋กœ๊ทธ์ธ๋„ ๊ตฌํ˜„ํ–ˆ์—ˆ๋Š”๋ฐ ๊ตณ์ด ํ•„์š”๊ฐ€ ์—†๋‹ค๋Š” ํŒ๋‹จํ•˜์— ๋นผ๋ฒ„๋ ธ๋‹ค.

์ฐธ๊ณ 

2์ฐจ ์ธ์ฆ

2์ฐจ ์ธ์ฆ(two factor authentication)์— ๋Œ€ํ•ด์„œ ์˜๊ฒฌ์ด ๋ถ„๋ถ„ํ–ˆ๋Š”๋ฐ, 2์ฐจ ์ธ์ฆ์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์ •์˜ํ•ด๋ณด์•˜๋‹ค.

2์ฐจ ์ธ์ฆ์€ ๋‹จ์ˆœํžˆ 2๋ฒˆ ์ด์ƒ ์ธ์ฆํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ธ์ฆ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ 2~3๊ฐ€์ง€ ์š”์†Œ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ธ์ฆ์„ ํ™•์ธํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค. ์ด ๋•Œ ์ถ”๊ฐ€์ ์ธ ์š”์†Œ๋Š” ๋‚˜๋ฆ„๋Œ€๋กœ ํ‘œ์ค€ํ™”๋œ 3๊ฐ€์ง€ ์š”์†Œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  1. Knowledge Factor(์‚ฌ์šฉ์ž๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ)

    • ex) ๋น„๋ฐ€๋ฒˆํ˜ธ, PIN(Personal Identification Number), ํŒจํ„ด, ์–ด๋ฆด์  ๋ณ„๋ช… ๋“ฑ

  2. Possession Factor(์‚ฌ์šฉ์ž๊ฐ€ ์†Œ์œ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ)

    • ex) OTP tokn, ์Šค๋งˆํŠธ ์นด๋“œ, ์‹ ์šฉ์นด๋“œ, ์ฒดํฌ์นด๋“œ, ํœด๋Œ€ํฐ์œผ๋กœ SMS ๋ฌธ์ž ๋ฐ›๋Š” ๊ฒฝ์šฐ ๋“ฑ

  3. 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