OAuth 2.0

OAuth 2.0

  • ์ธ๊ฐ€ ํ”„๋ ˆ์ž„ ์›Œํฌ

Authorization(์ธ๊ฐ€)

์ธ์ฆ์„ ๋ฐ›์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ดํ›„ ์ธ์ฆ์ด ํ•„์š”ํ•œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๋•Œ ์„œ๋ฒ„์—์„œ ๋กœ๊ทธ์ธ(์ธ์ฆ๋œ ์‚ฌ์šฉ์ž)์ธ์ง€ ํ™•์ธ ํ›„ ํ—ˆ๊ฐ€๋ฅผ ํ•ด์ฃผ๋Š” ๊ฒƒ

๋™์ž‘ ๋ฐฉ์‹

์ „์ฒด์ ์ธ Flow

  • ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž์˜ ์„œ๋น„์Šค ๊ถŒํ•œ์„ ํ™•์ธ

  • ๊ถŒํ•œ์ด ์—†์œผ๋ฉด, ์ธ๊ฐ€๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์•Œ๋ฆผ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธํ‹ฐ

  • ์‚ฌ์šฉ์ž๋Š” ์„œ๋น„์Šค์— ์ธ๊ฐ€ ์š”์ฒญ

  • ์„œ๋น„์Šค๋Š” ์ธ๊ฐ€๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋Š” ์ž„์‹œ ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ธ‰

  • ์‚ฌ์šฉ์ž๋Š” ๋ฐ›์€ ์ž„์‹œ ์ฝ”๋“œ๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌ

  • ์„œ๋ฒ„๋Š” ์ด ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด ์„œ๋น„์Šค ์ ‘๊ทผ ๊ถŒํ•œ์„ ๊ฐ–๋Š” ํ† ํฐ์„ ์ƒ์„ฑํ•˜๊ณ  ์ €์žฅ

  • ์‚ฌ์šฉ์ž๋Š” ํ•ด๋‹น ํ† ํฐ์„ ํ†ตํ•ด ์„œ๋น„์Šค๋ฅผ ์ด์šฉ

  • ID์™€ PW๋Š” ๋ฐœ๊ธ‰๋ฐ›์€ ํ›„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ํ•œ ๋ฌด๊ธฐํ•œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด, ํ† ํฐ์€ ๋ฐœ๊ธ‰ ์‹œ์  ์ดํ›„ ์ œํ•œ๋œ ์‹œ๊ฐ„ ๋™์•ˆ๋งŒ ์œ ํšจํ•˜์—ฌ ํŠน์ • ๊ถŒํ•œ์„ ๋ฌด๊ธฐํ•œ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ํ† ํฐ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ๋งŒ์•ฝ ์žƒ์–ด๋ฒ„๋ ธ์„ ๋•Œ ํ”ผํ•ด๊ฐ€ ์ ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„ธ๋ถ€์ ์ธ Flow

  • ์ธ์ฆ ํ† ํฐ์„ ์–ป๊ธฐ ์œ„ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ(์„œ๋ฒ„)์—๊ฒŒ ์š”์ฒญ

    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•ฑ์ด๋‚˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋งŽ์ด ๊ฐ€๋ฆฌ์ผœ์„œ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ์Œ. OAuth 2.0 ์ธ๊ฐ€ ๊ณผ์ •์—์„œ ์ฃผ์ฒด๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ง

  • ์ธ๊ฐ€๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์ธ์ฆ์„ ํ•ด์•ผํ•  ์œ„์น˜๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‘๋‹ต์„ ๋ณด๋ƒ„

    • ์œ„์น˜์—๋Š” ์ธ๊ฐ€์— ํ•„์š”ํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์„ ์ถ”๊ฐ€

    • client_id: ํด๋ผ์ด์–ธํŠธ์˜ ์‹๋ณ„์ž

    • response_type: ์–ด๋–ค ์ธ๊ฐ€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณด๋‚ผ์ง€ ๋ช…์‹œ.

      • code๋Š” OAuth 2.0์˜ ๊ฐ€์žฅ

        ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์ธ ์ธ๊ฐ€ ์ฝ”๋“œ ํ”Œ๋กœ์šฐ๋ฅผ ๋œปํ•จ.

    • scope: ์ธ๊ฐ€ํ•  ์ ‘๊ทผ ๊ถŒํ•œ

    • redirect_uri: ์ธ๊ฐ€๋ฅผ ๋งˆ์นœ ํ›„ ๋‹ค์‹œ ๋Œ์•„์˜ฌ URL

  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‘๋‹ต์€ ๋ฐ›์€ ๋ธŒ๋ผ์šฐ์ €๋Š” ํ•ด๋‹น Location์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ.

    • ์ธ๊ฐ€ ์„œ๋ฒ„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

  • ์ธ์ฆ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ํ™•์ธํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์Šน์ธ

  • ์ธ๊ฐ€ ์„œ๋ฒ„์—์„œ ์Šน์ธ์ด ์™„๋ฃŒ๋˜๋ฉด ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ธ‰ํ•˜์—ฌ ์ฒ˜์Œ ์š”์ฒญํ•  ๋•Œ ์ „์†กํ–ˆ๋˜ redirect_uri๋’ค์— ์ถ”๊ฐ€์ ์ธ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‘๋‹ต์„ ๋ณด๋ƒ„

  • ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‘๋‹ต์„ ๋ฐ›์€ ๋ธŒ๋ผ์šฐ์ €๋Š” Location์œผ๋กœ ๊ทธ๋Œ€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ

    • ์š”์ฒญ์„ ๋ฐ›์€ ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„๋Š” ์ „๋‹ฌ๋ฐ›์€ code์™€ client_id๊ทธ๋ฆฌ๊ณ  client_secret์„ ๊ฐ™์ด ์ธ๊ฐ€ ์„œ๋ฒ„์— ์ „์†กํ•˜์—ฌ ํ† ํฐ์„ ๋ฐœ๊ธ‰

  • ์ธ๊ฐ€ ์„œ๋ฒ„๋Š” ์ด๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ์ ‘๊ทผ ๊ถŒํ•œ ํ† ํฐ์„ ์‘๋‹ต

OAuth 2.0 ๋ณด์•ˆ ์ทจ์•ฝ์ 

์‚ฌ์šฉ์ž๊ฐ€ ์˜๋„ํ•˜์ง€ ์•Š์€ ํ–‰๋™์„ ํ•˜๋„๋ก ํ•˜์—ฌ ์„ธ์…˜์„ ํƒˆ์ทจํ•˜๊ฑฐ๋‚˜ ๊ณต๊ฒฉ์ž์˜ ์„ธ์…˜์„ ์ง‘์–ด ๋„ฃ๋Š” ๊ณต๊ฒฉ

  • OAuth๋Š” ๋‘ ๊ฐ€์ง€์˜ ์ฑ„๋„์„ ์‚ฌ์šฉ

Front Chanel: ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ

  • ๋ฆฌ๋‹ค๋ ‰ํŠธ๋ฅผ ํ†ตํ•ด์„œ ์ธ๊ฐ€ ์„œ๋ฒ„๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ , ์ธ๊ฐ€ ์ฝ”๋“œ๋„ ๋ฆฌ๋‹ค๋ ‰ํŠธ๋ฅผ ํ†ตํ•ด์„œ ์ „๋‹ฌ

  • ํ”„๋ก ํŠธ ์ฑ„๋„์„ ์ด์šฉํ•˜๋Š” ์ด์œ ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ œ 3์ž ์„œ๋น„์Šค(์ธ๊ฐ€ ์„œ๋ฒ„)์— ์ง์ ‘ ์ธ์ฆ์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ

  • ํ”„๋ก ํŠธ ์ฑ„๋„์„ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋ชจ๋“  ์ •๋ณด๋Š” ๊ณต๊ฐœ๋˜๊ณ  ์œ ์ถœ๋  ์ˆ˜ ์žˆ๊ธฐ์— ์ ์ ˆํžˆ ๋ณดํ˜ธํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๊ฐ€ ์œ„ํ—˜์— ๋…ธ์ถœ๋œ๋‹ค.

  • client_id, scope(์ ‘๊ทผ ๊ถŒํ•œ), redirect_uri, code(์ธ๊ฐ€ ์ฝ”๋“œ) ๋ชจ๋‘๊ฐ€ ๊ณต๊ฐœ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ์„ ์ ์ ˆํ•˜๊ฒŒ ๋ณดํ˜ธํ•ด์•ผ ํ•œ๋‹ค.

    • ๋ธŒ๋ผ์šฐ์ € ํžˆ์Šคํ† ๋ฆฌ, ์™€์ด์–ด ์ƒคํฌ ํŒจํ‚ท ๋ถ„์„๊ธฐ ๋“ฑ

    • URL์€ ์•”ํ˜ธํ™”๊ฐ€ ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ

  • scope: ๊ถŒํ•œ์„ ๋‚˜ํƒ€๋ƒ„

    • Github OAuth์˜ ๊ฒฝ์šฐ ์ฒ˜์Œ ๋“ฑ๋กํ•  ๋•Œ์˜ ๊ถŒํ•œ๊ณผ ๋‹ค๋ฅด๋ฉด ๊ฑฐ์ ˆํ•˜๋Š” ๋“ฑ์œผ๋กœ ์ฒ˜๋ฆฌ

  • client_id ์‹๋ณ„์ž

    • ๊ฐ€์งœ ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์–ด ํ—ˆ์šฉ๋œ client_id๋ฅผ ๊ฐ€์ ธ์™€ ์ธ์ฆํ•˜๋„๋ก ํ•˜๋ฉด ๋งˆ์น˜ ๋‚ด๊ฑฐ์ธ๊ฑฐ๋งˆ๋ƒ ์•„์ด๋””๋ฅผ ํ‰๋‚ด๋‚ผ ์ˆ˜ ์žˆ์Œ

    • client_secret์€ backend chanel๋กœ๋งŒ ์ „์†ก๋˜๊ณ  ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ† ํฐ์„ ๊ตํ™˜ํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  client_id ์ฃผ์ธ ์‹๋ณ„๊ฐ€๋Šฅ

    • redirect_uri: code๋ฅผ ์–ป๊ณ ๋‚˜์„œ ์–ด๋””๋กœ ๋Œ์•„์˜ฌ์ง€์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ

      • ์•…์˜์ ์œผ๋กœ ๊ฒฝ๋กœ๋ฅผ ๋ฐ”๊พผ ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ํƒˆ์ทจ

      • redirect_mismatch -> ์ฒ˜์Œ ๋“ฑ๋ก๋œ๊ฒƒ๊ณผ ๋‹ค๋ฅด๋ฉด ๊ฑฐ์ ˆ

        • ์™„์ „ ์ผ์น˜ ๊ฒ€์‚ฌ, ํ•˜์œ„ URL ํ—ˆ์šฉ, ๋„๋ฉ”์ธ ๊ฒ€์‚ฌ ๋“ฑ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณด์•ˆ์ ์œผ๋กœ๋Š” ์ทจ์•ฝํ•ด์ง

    • code: ํ† ํฐ์„ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ

      • ์ธ๊ฐ€ ์ฝ”๋“œ๋Š” ์ œ์ผ ์ค‘์š”ํ•œ ์ •๋ณด๋กœ ํƒˆ์ทจ๋˜์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

      • ๊ทธ๋ž˜์„œ ์ธ๊ฐ€ ์„œ๋ฒ„๋Š” ํ•œ ๋ฒˆ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋Š” ๋‘ ๋ฒˆ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ํ๊ธฐํ•ด์•ผ ํ•œ๋‹ค

      • stateํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ CSRF ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€

      • state: ์•Œ๊ธฐ ์–ด๋ ค์šด ๋ฌธ์ž์—ด, ์š”์ฒญํ•œ์‚ฌ๋žŒ๊ณผ ์ธ๊ฐ€ํ•œ์‚ฌ๋žŒ์ด ๊ฐ™์€์ง€ ํŒ๋ณ„ (CSRF ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•จ)

        • ํด๋ผ์ด์–ธํŠธ(์„œ๋ฒ„)๊ฐ€ ์ธ๊ฐ€ ์„œ๋ฒ„๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•˜๊ธฐ ์ „์— ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜์— state๋ผ๋Š” ์ž„์˜์˜ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด์„œ ๊ฐ™์ด ์ „๋‹ฌ

        • ์ธ๊ฐ€ ์„œ๋ฒ„๋Š” ์ธ๊ฐ€ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ state๋ฅผ ๋ฐ›์€ ๊ทธ๋Œ€๋กœ ๋Œ๋ ค์ค˜์„œ ์ฒ˜์Œ์— ์„ธ์…˜์— ๋“ฑ๋กํ–ˆ๋˜ state์™€ ๋น„๊ต

        • ๋งŒ์•ฝ ์ด state๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋‹ค๋ฅด๋‹ค๋ฉด ์š”์ฒญ์„ ๊ฑฐ๋ถ€

        • state๋ฅผ ๋ณ€๊ฒฝํ•ด์„œ ๊ณต๊ฒฉํ•˜๋”๋ผ๋„ ์„œ๋ฒ„์˜ ์„ธ์…˜์€ ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฒฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

Backend Chanel: ์„œ๋ฒ„์™€ ์„œ๋ฒ„๊ฐ„ ํ†ต์‹ ํ•˜๋Š” ์ฑ„๋„

  • ์‚ฌ์šฉ์ž์™€๋Š” ์ƒ๊ด€์—†์ด ์‹œ์Šคํ…œ์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ

  • ํ”„๋ก ํŠธ ์ฑ„๋„์„ ํ†ตํ•ด ๋ฐ›์€ ์ธ๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ ‘๊ทผ ๊ถŒํ•œ ํ† ํฐ์„ ์š”์ฒญ

  • HTTPS๋ฅผ ํ†ตํ•ด ์•”ํ˜ธํ™”๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์ ์Œ

OAuth ์ธ์ฆ

OAuth 2.0์ด ์ฃผ๋กœ ๊ฐ„ํŽธ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋‹ค ๋ณด๋‹ˆ, ์‚ฌ๋žŒ๋“ค์€ OAuth 2.0์„ ์ธ์ฆ ํ”„๋ฅดํ† ์ฝœ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ OAuth 2.0์€ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ์ด ์•„๋‹™๋‹ˆ๋‹ค.

OAuth 2.0์—์„œ ํ† ํฐ์€ ๋ถˆํˆฌ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ† ํฐ์€ ์ธ๊ฐ€ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ๊ทธ๋Œ€๋กœ ์ €์žฅํ•˜๊ณ  ๊ทธ๋Œ€๋กœ ์ „๋‹ฌํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์–ป๋Š” ๋ฐ ์“ฐ์ž…๋‹ˆ๋‹ค. ์ด ํ† ํฐ์ด ์–ด๋–ค ํ˜•์‹์ธ์ง€๋Š” OAuth 2.0 ์ž์ฒด์—์„œ ์ •์˜๋˜์–ด ์žˆ์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ์ด ํ† ํฐ์„ ๋ถˆํˆฌ๋ช…ํ•˜๊ฒŒ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์ด ํ† ํฐ์„ ๊ฐ€์ง€๊ณ  ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๊ทธ ์‚ฌ๋žŒ์ด ํ™•์ธ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์•„ํŒŒํŠธ ํ˜„๊ด€ ๋ฌธ์„ ํƒ๋ฐฐ๊ธฐ์‚ฌ๋‹˜๋“ค์ด ์—ด ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ํƒ๋ฐฐ๊ธฐ์‚ฌ๋‹˜์ด ์šฐ๋ฆฌ ์•„ํŒŒํŠธ ์ฃผ๋ฏผ์ด ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ฃ . ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ํƒ๋ฐฐ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ ๋ฌธ์„ ์—ด ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ธ๊ฐ€ํ•œ ๊ฒƒ ๋ฟ์ž…๋‹ˆ๋‹ค.

  • OAuth๋Š” ์ธ๊ฐ€๋ฅผ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ, ์ธ์ฆ์„ ๋Œ€์‹ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ์“ฐ๋Š”๊ฒƒ์€ ์•„๋‹˜

    • ์ธ์ฆ๊ณผ ์ธ๊ฐ€๋Š” ๋‹ค๋ฅด๋‹ค.

  • ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ์ธ๊ฐ€๋Š” ํ–ˆ์ง€๋งŒ ์ธ์ฆ์€ ์„œ๋ฒ„์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•จ

  • ์ฆ‰, OAuth๋Š” ์ธ์ฆ์„ ์œ„ํ•œ๊ฒƒ์ด ์•„๋‹Œ ์ธ๊ฐ€๋ฅผ ํ•จ์œผ๋กœ์จ "์ด๊ฑธ ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ ์ด ์‚ฌ๋žŒ์ด ๋งž๊ฒ ์ง€" ์ •๋„๋กœ ํƒ€ํ˜‘ํ•˜๋Š”๊ฒƒ

  • ์‚ฌ์šฉ์ž๋ฅผ ์–ป๋Š”๊ฒƒ ๊นŒ์ง€๋งŒ OAuth ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ณ  ๊ทธ๊ฑธ ๊ฐ€์ ธ์™€์„œ ์šฐ๋ฆฌ ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅ์ด๋˜๋ฉด ์ดํ›„๋ถ€ํ„ฐ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋กœ ์ฃผ๊ณ ๋ฐ›์•„ ์ธ์ฆ์ฒ˜๋ฆฌ๋ฅผ ํ•จ

OpenID Connect Protocol

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ์ธ์ฆ ํ”„๋กœํ† ์ฝœ

  • OpenID Connect๋Š” OAuth 2.0 ์ธ๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™•์žฅ

  • ๋‹ค๋ฅธ ์„œ๋น„์Šค๊ฐ€ ์ธ์ฆ์„ ๋Œ€์‹  ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ

  • OAuth๋ฅผ ํ™•์žฅํ•œ๊ฒƒ์ด๋ผ ํ† ํฐ์„ ์–ป๋Š” ๊ณผ์ •์€ ์™„์ „ํžˆ ๋™์ผํ•จ

  • ํ† ํฐ์„ ๋ฐ›์„ ๋–„ ์ธ๊ฐ€์™€ ๊ด€๋ จ๋œ ํ† ํฐ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ id_token์ด๋ผ๊ณ  ํ•ด์„œ ์ธ์ฆ๋ฐ›์€ ํ† ํฐ์„ ์ถ”๊ฐ€๋กœ ๋ฐ›๋Š”๋‹ค.

  • ํ•ด๋‹น ํ† ํฐ์—๋Š” ๋ˆ„๊ฐ€ ๋ฐœํ–‰ํ–ˆ๊ณ  ์–ธ์ œ ๋งŒ๋ฃŒ๋˜๋Š”์ง€, ๋ˆ„๊ตฌ์ธ์ง€์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ JWT ํ˜•์‹์œผ๋กœ ์ €์žฅ๋˜์–ด์žˆ์Œ

  • ํ•ด๋‹น ํ† ํฐ์„ ์„œ๋ฒ„๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌํ•˜๋ฉด ๋จ

    • JWT ํ˜•์‹์ด๋ผ ์•„๋ฌด๋‚˜ ๋งŒ๋“ค ์ˆ˜ ์—†์ง€๋งŒ ๋ˆ„๊ตฌ๋‚˜ ๊ฒ€์ฆ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ

Last updated