Back-end/SpringBoot

[Spring Boot] ์ฐจ๊ทผ์ฐจ๊ทผ OAuth 2.0 ๊ตฌํ˜„ํ•˜๊ธฐ - (1) ๊ฐœ๋… ์ •๋ฆฌ

๐Ÿง oAuth๋ž€?

๋‚˜์˜ ์„œ๋น„์Šค๊ฐ€ ์žˆ์„ ๋•Œ

์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ Google, Github, Kakao ๋“ฑ์˜ ID์™€ Password๋ฅผ ๋ฐ›์•„

Google, Github, Kakao์˜ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์œ ์ถœ๋˜๋Š” ๊ฐ ์ข… ๋ณด์•ˆ์‚ฌ๊ณ ๊ฐ€ ๋‚  ๊ฒƒ์ด๋‹ค.

๋˜ํ•œ ์œ„ ์‚ฌ์ดํŠธ๋“ค๋„ ๋ฏฟ๊ณ  ๋งก๊ธฐ์ง€ ๋ชปํ•  ๊ฒƒ์ด๋‹ค.

 

์ด๋•Œ oAuth 2.0๋ฅผ ์ด์šฉํ•ด Resource Server(Google, Github, Kakao)๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ก How?

Id์™€ Password ๋Œ€์‹ ์— AccessToken์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

if) ๋‚ด ์„œ๋น„์Šค๊ฐ€ Resource Server(Google, Github, Kakao)์˜ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด?

  • Authorization Server์— ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ ์š”์ฒญ์„ ํ•œ๋‹ค.

  • Authorization Server์—์„œ ClientId์™€ Client Secret๊ฐ’์„ ๋ฐœ๊ธ‰ํ•ด์ค€๋‹ค.

  • ๋‚ด ์„œ๋น„์Šค๋Š” ์ด 2๊ฐœ๋ฅผ ์ €์žฅํ•œ๋‹ค. (Client Secret ๊ฐ’์€ __์ ˆ๋Œ€__ ๋…ธ์ถœ๋˜๋ฉด ์•ˆ ๋œ๋‹ค.)

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ด ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋ ค ํ•˜๊ธฐ ์œ„ํ•ด ๋กœ๊ทธ์ธ์„ ํ•˜๋ฉด Authorization Server์— ์ ‘๊ทผ์ด ๋œ๋‹ค.

  • Authorization Server๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‚ด ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ๊ฒƒ์ธ๊ฐ€ ๋ฌผ์–ด๋ณธ๋‹ค.

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋™์˜ํ•˜๋ฉด Authorization Server๋Š” ๋‚ด ์„œ๋น„์Šค์— ์ •๋ณด(CODE)๋ฅผ ์ค€๋‹ค.

  • ๋‚ด ์„œ๋น„์Šค๋Š” ๊ทธ ์ฝ”๋“œ๊ฐ’๊ณผ ๋ณด๊ด€ ์ค‘์ธ Id์™€ Secret์„ ๋‹ด์•„ Authorization Server์— ๋‹ค์‹œ ๋ณด๋‚ธ๋‹ค.

  • ๊ทธ ํ›„ Authorization Server๋Š” ์ด๋ฅผ ๋น„๊ตํ•ด ๊ฒ€์ฆํ•œ๋‹ค.

  • ๊ฒ€์ฆ ๊ฒฐ๊ณผ ๋ชจ๋‘ ์œ ํšจํ•˜๋‹ค๋ฉด ๋‚ด ์„œ๋น„์Šค์—๊ฒŒ __AccessToken__์„ ๋ฐœ๊ธ‰ํ•ด์ค€๋‹ค.

    ๋‚ด ์„œ๋น„์Šค๋Š” ์ด์ œ AccessToken์„ ์‚ฌ์šฉํ•ด Resource Server์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Spring boot๋กœ ๊ตฌ๊ธ€, ํŽ˜์ด์Šค๋ถ, ์นด์นด์˜ค, ๋„ค์ด๋ฒ„์˜ Oauth 2 ์ธ์ฆ ์„œ๋ฒ„์™€ ์—ฐ๋™ํ•  Client Server๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

๋ฐ˜์‘ํ˜•