Google OAuth Setup
About
Spring Security๋ก OAuth ๊ตฌํํ ๋ ์ฃผ์ ๋ฑ๋กํ๋ ๊ฒ ๋๋ฌด ๋ง๊ณ ํท๊ฐ๋ ค์ ๋ ํผ๋ฐ์ค๋ฅผ ๊ณ์ ๋ณด๊ฒ ๋ฉ๋๋ค. ๊ณ ํต์ ๋ง์ด ๋ฐ์ ์ด ์ฐธ์ ์ ๋ฆฌํด๋ก๋๋ค.
Keywords
OAuth
Client ID
,Client Secret
- ํด๋น ID์ secret์ผ๋ก ์ด๋ค ๊ตฌ๊ธ OAuth ์ฑ์ธ์ง ์๋ณํ๊ณ ๋ก๊ทธ์ธํ ๊ถํ์ ์ป์ต๋๋ค. ๊ตฌ๊ธ (GCP)์์ OAuth ์ฑ์ ๋ง๋ค๊ณ ๋ฐ๊ธ๋ฐ์ ์ ์์ต๋๋ค.๋ฐฑ์๋๊ฐ Redirect ํฌํจ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ๋ฅผ ๋ชจ๋ ํ๋ ์น ๋ฒ์ ๋ก๊ทธ์ธ์ ๊ฒฝ์ฐ ๋ฐฑ์๋์ ๋ฑ๋กํด์ค์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ด ๋ฐฉ์์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ด๋๋ฅผ ์์ฑํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฉ์ ๋ก๊ทธ์ธ์ ๊ฒฝ์ฐ์ ํ๋ก ํธ์๋์ ๋ฑ๋กํด์ผ ํฉ๋๋ค.
๋ฐฑ์๋ OAuth ๋ก๊ทธ์ธ URL - e.g.,
http://localhost:8080/oauth2/authorize/google?redirect_uri=http://localhost:3000/auth/redirect
ํ๋ก ํธ์๋์์ ๋งจ ์ฒ์ ๋ฐฑ์๋๋ก ์์ฒญํ๋ ๊ตฌ๊ธ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋ฃ์ด์ฃผ๋ ์ฃผ์์ ๋๋ค.
Google ๋ก๊ทธ์ธ ๋ฐฉ์์ผ๋ก ๋ก๊ทธ์ธ ํ ๋ค ํ๋ก ํธ์๋์
/auth/redirect
๋ก ๋์์๋ฌ๋ผ๋ ์์ฒญ์ ๋๋ค.
๋ฐฑ์๋ Redirect URI - e.g.,
http://localhost:8080/login/oauth2/code/google
๊ตฌ๊ธ ์ฑ์์ Authorized Redirect URI๋ก ๋ฑ๋กํด์ค์ผ ํฉ๋๋ค. ๊ตฌ๊ธ์์ ํ ํฐ์ ๋ฐ๊ธํ๊ณ ํด๋น ์ฃผ์๋ก ๊ฐ๊ฒ ๋๋ ๋ถ๋ถ์ ๋๋ค.
ํ๋ก ํธ์๋๋ ์ ํ์ ์์ต๋๋ค.
ํ๋ก ํธ์๋ Redirect URI - e.g.,
http://localhost:3000/auth/redirect
๋ชจ๋ ๋ก๊ทธ์ธ ์์ ์ ๋ง์น๋ฉด ๋ฐฑ์๋์์ ํ๋ก ํธ์๋์ ํด๋น ์ฃผ์๋ก redirect ์ํต๋๋ค.
๋ฐฑ์๋์์ ๋ฑ๋กํด์ค์ผ ํฉ๋๋ค.
ํ๋ก ํธ์๋์์ ํด๋น ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ , ๋ฐฑ์๋์์ ์ฟผ๋ฆฌ์คํธ๋ง์ ๋ฃ์ด์ค ํ ํฐ์ ์ฒ๋ฆฌํ๋ ๋ก์ง(์ฟ ํค ์ ์ฅ ๋ฑ)์ ๊ตฌํํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์ ๋์จ ํ ํฐ์ Authorization ํค๋์ ๋ฃ๊ณ ์ธ์ฆ๋ ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค.
๊ตฌ๊ธ ์ฑ์์๋ ์ ํ์ ์์ต๋๋ค.
Details
์ผ๋จ client-id์ client-secret์ ๋ ๋ค ๋ฑ๋กํด์ค์ผ ํฉ๋๋ค. JavaScript ๋ฒ์ ์ ๋ก๊ทธ์ธ์ด ์๋ ์น ๋ฒ์ ์ ๋ก๊ทธ์ธ์ด๋ฏ๋ก ๋ฐฑ์๋ ์ชฝ์ ๋ฃ์ต๋๋ค. (application-oauth.yml
)
Google OAuth App์์ Authorized Redirect URI ์ถ๊ฐ
์๋ฅผ ๋ค๋ฉด
http://localhost:8080/login/oauth2/code/google
์ ๋๋ค.์ด ์ฃผ์๋ฅผ Google์ Authorized Redirect URI์ ๋ฃ์ด์ค์ผ ํฉ๋๋ค. ๋ฃ์ง ์์ผ๋ฉด ๊ตฌ๊ธ์์
unauthorized_redirect_uri
์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ฐฑ์๋์์ ํ๋ก ํธ์๋๋ก ๋์๊ฐ๋ authorized redirect URI ์ถ๊ฐ
๋ฐฑ์๋์์ SecurityConfiguration ๊ตฌํ ์ authorization ๊ด๋ จ URI ์ถ๊ฐ
ํ๋ก ํธ์๋์์ ๋ฐฑ์๋๋ก ์์ฒญํ๋ ๋ฒํผ ๊ตฌํ
์ด๋ url์ ๋จ์
<a>
ํ๊ทธ๋ฅผ ๋ฃ์ ๋ฒํผ์href
์์ฑ์url
์ ๋ฃ์ด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
ํ๋ก ํธ์๋์์์ redirect URI์ ๋ํ ์ฒ๋ฆฌ
๋ก๊ทธ์ธ์ ์๋ฃํ๊ณ ๋ฐฑ์๋์์ JWT ํ ํฐ ๊ฐ์ ํ๋ก ํธ์๋์ Redirect URL๋ก ์ฟผ๋ฆฌ์คํธ๋ง์ ํตํด ๋ณด๋ด์ค๋๋ค. (
?access_token=XX&refresh_token=XXX
)/auth/redirect
ํ์ด์ง๋ฅผ ๋ง๋ค๊ณ , ํด๋น ํ์ด์ง์ ์ ๋ฌ๋ ์ฟผ๋ฆฌ๋ฅผ ์ฝ์ต๋๋ค. ์ฟผ๋ฆฌ๋ฅผ ์ฝ์ด ํ ํฐ์ ๊ฐ์ ธ์ค๊ณ ์ฟ ํค์ ์ ์ฅํด์ค์ ์ฑ์์ ๊ด๋ฆฌํด์ฃผ๋ฉด ๋ฉ๋๋ค.์ด๊ฒ ํ๋ก ํธ์๋์
authorized-redirect-uri
์ ๋๋ค. ๋ฐฑ์๋์์๋application-oauth.yml
์์ ๋ฑ๋กํด์ค๋๋ค.
Reference
๋ ํผ๋ฐ์ค๋ ๋ค์ ๊ธ ํ๋๋ก ๋ค ํด๊ฒฐ์ด ๋ฉ๋๋ค.
[Spring Boot] OAuth2 ์์ ๋ก๊ทธ์ธ ๊ฐ์ด๋ (๊ตฌ๊ธ, ํ์ด์ค๋ถ, ๋ค์ด๋ฒ, ์นด์นด์ค)
Last updated