OAuth

์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๋“ค์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์›น์‚ฌ์ดํŠธ ์ƒ์˜ ์ž์‹ ๋“ค์˜ ์ •๋ณด์— ๋Œ€ํ•ด ์›น์‚ฌ์ดํŠธ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ณตํ†ต์ ์ธ ์ˆ˜๋‹จ์œผ๋กœ์„œ ์‚ฌ์šฉ๋˜๋Š”, ์ ‘๊ทผ ์œ„์ž„์„ ์œ„ํ•œ ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€์ด๋‹ค.

์ธ์ฆ ํ”„๋กœํ† ์ฝœ

  • Resource Server : ์ž์›์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ์„œ๋ฒ„(์ œ๊ณต์ž)

  • Resource Owner : ์ž์›์˜ ์†Œ์œ ์ž(์œ ์ €)

  • Client : Server์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ ์ž ํ•˜๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜

OAuth์˜ ๋™์ž‘ ๊ณผ์ •

  1. Client ๋“ฑ๋ก

    • Resource Server๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋น„์Šค ๋“ฑ๋ก ๊ณผ์ •(์‚ฌ์ „ ์Šน์ธ)

    • Client ID, Client Secret(๋น„๋ฐ€ํ‚ค), Authorized redirect URL(Code๋ฅผ ์ „๋‹ฌ๋ฐ›์„ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ฃผ์†Œ)

  2. Resource Owner์˜ ์Šน์ธ

    • ๊ฐ ์ œ๊ณต์ž๋Š” ์†Œ์…œ๋กœ๊ทธ์ธ์„ ํ•˜๊ธฐ์œ„ํ•ด url๋กœ GET ์š”์ฒญ์„ ๋ณด๋‚ด๋„๋ก ๋ช…์‹œํ•จ

    • Resource Owner๋Š” Client์—์„œ ํ•ด๋‹น url๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ํด๋ฆญ

    • Resource Owner๋Š” ๋กœ๊ทธ์ธ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์™„๋ฃŒ๋˜๋ฉด Server๋Š” Query String์œผ๋กœ ๋„˜์–ด์˜จ ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์„ ํ†ตํ•ด Client๋ฅผ ๊ฒ€์‚ฌํ•จ

      • Client ID ํ™•์ธ, Redirect URL ํ™•์ธ

  3. Resource Server์˜ ์Šน์ธ

    • ๋ช…์‹œ๋œ Redirect URL๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‹œํ‚ค๊ณ  Resource Server๋Š” ์ž„์‹œ ์•”ํ˜ธ์ธ Authorization Code๋ฅผ ํ•จ๊ป˜ ๋ฐœ๊ธ‰(Query String)

    • Client๋Š” ID์™€ ๋น„๋ฐ€ํ‚ค ๋ฐ Code๋ฅผ Server์— ์ง์ ‘ ์ „๋‹ฌํ•˜๊ณ  ์œ ํšจํ•œ ์š”์ฒญ์ด๋ผ๋ฉด Access Token์„ ๋ฐœ๊ธ‰๋ฐ›๊ฒŒ ๋จ

  4. API ํ˜ธ์ถœ

    • Client๋Š” ํ•ด๋‹น ํ† ํฐ์„ ์„œ๋ฒ„์— ์ €์žฅํ•ด๋‘๊ณ  Server์˜ ์ž์›์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ APIํ˜ธ์ถœ์‹œ ํ† ํฐ์„ ํ—ค๋”์— ๋‹ด์•„์„œ ๋ณด๋ƒ„

  5. Refresh Token

    • Refresh Token์˜ ๋ฐœ๊ธ‰ ์—ฌ๋ถ€์™€ ๋ฐฉ๋ฒ• ๋ฐ ๊ฐฑ์‹  ์ฃผ๊ธฐ๋Š” Server๋งˆ๋‹ค ์ƒ์ดํ•จ

    • ๋ณดํ†ต Access Token์„ ๋ฐœ๊ธ‰ํ•  ๋•Œ Refresh Token์„ ํ•จ๊ป˜ ๋ฐœ๊ธ‰

    • Client๋Š” ๋‘ Token์„ ๋ชจ๋‘ ์ €์žฅํ•ด๋‘๊ณ  Access Token์ด ๋งŒ๋ฃŒ๋˜์–ด 401์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Refresh Token์„ ๋ณด๋‚ด ์ƒˆ๋กœ์šด Access Token์„ ๋ฐœ๊ธ‰๋ฐ›์Œ

Reference

OAuth ๊ฐœ๋… ๋ฐ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ดํ•˜๊ธฐ

Last updated