๐ง 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๋ฅผ ๋ง๋ค์ด๋ณด์.