๐ Spring/Spring Security
์ ๋ฒ ์๊ฐ์๋ ์ง์ ์ปจํธ๋กค๋ฌ์์ ์์ฒญ์ ๊ตฌํํ์ฌ์ OAuth2 ์ธ์ฆ์ ์ฒ๋ฆฌํด๋ดค์ต๋๋ค. ์ด๋ฒ ์๊ฐ์๋ OAuth2-client ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์, ์์
๋ก๊ทธ์ธ API๋ฅผ ๊ตฌํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๊ฐ๋ฐ ํ๊ฒฝ IntelliJ IDEA Spring Boot 2.4.4 Java 11 Spring JPA Maven 3.6.3 Maven ์์กด์ฑ ์ถ๊ฐ spring-boot-starter-oauth2-client๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ตฌ๊ธ,ํ์ด์ค๋ถ ๊ฐ์ ๋ก๊ทธ์ธ์ ํตํ ์ธ์ฆ๊ณผ ๊ถํ ์ฒ๋ฆฌ๋ฅผ ์ฝ๊ฒ ํ ์ ์๊ฒ ํด์ค๋ค. org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-oauth2-client spring..
๐ Spring/Spring Security
์ด๋ฒ์๋ ๋ค์ด๋ฒ ์์ด๋๋ก ๋ก๊ทธ์ธ(๋ค์๋ก) ๋ฅผ ๊ตฌํํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ฐธ๊ณ : ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. ์นด์นด์ค ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. ์์
๋ก๊ทธ์ธ์ ํ๊ธฐ์ํด ํ์ํ API ํค ๋ฐ๊ธ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. 1. ๋ค์๋ก ์ฐ๋ URL ์์ฒญ ์๋์ฒ๋ผ ์ํ๋ ํ๊ทธ์ ์์ฒญ URL์ ์์ฑ ์์ผ์ ๋ฃ์ด์ฃผ๋๋ก ํฉ๋๋ค. (state๋ ์๋ ๊ณ์ ๋๋ค์ผ๋ก ์์ฑํด์ฃผ์ด์ผ ํ๋๋ฐ, ์ฌ๊ธฐ์๋ ํ
์คํธ๋ฅผ ์ํด "state"๋ผ๋ ๊ฐ์ผ๋ก ํ๊ฒ ์ต๋๋ค.) ๋ค์ด๋ฒ๋ก ๋ก๊ทธ์ธ ํ๊ธฐ 2. Redirect URI ์ฒ๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ ์์ฑ ์ ๋ ์ ํ๋ฆฌ์ผ์ด์
์์ Redirect URI๋ฅผ "/login/oauth/code/naver"๋ก ์ค์ ํ์ต๋๋ค. @Controller @RequestMapping(..
๐ Spring/Spring Security
์ด๋ฒ ์๊ฐ์๋ ๊ตฌ๊ธ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค. ์ฐธ๊ณ : ๋ค์ด๋ฒ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. ์นด์นด์ค ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. ์์
๋ก๊ทธ์ธ์ ํ๊ธฐ์ํด ํ์ํ API ํค ๋ฐ๊ธ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. 1. ์ธ์ฆ ์ฝ๋ ๋ฐ๊ธฐ ์ํ๋ ํ๊ทธ์ ๋งํฌ๋ฅผ ์ถ๊ฐํด์ค๋๋ค. ๊ตฌ๊ธ ๋ก๊ทธ์ธ ํด๋น ํ๊ทธ๋ฅผ ํด๋ฆญํ๊ฒ ๋๋ฉด, ๊ตฌ๊ธ ๋ฆฌ์์ค ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๊ณ , ์ฐ๋ฆฌ๊ฐ ์ค์ ํ ๋ฆฌ๋ค์ด๋ ์
URI๋ก ์ฝ๋๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ๋งํฌ๋ฅผ ํ์ธํด๋ณด๋ฉด, ์๋์ ๊ฐ์ด ์ฟผ๋ฆฌ ์คํธ๋ง ํ๋ผ๋ฏธํฐ์ code๊ฐ์ด ๋ด๊ฒจ์์ ๊ฒ์
๋๋ค. http://localhost:8080/login/oauth2/code/google?code=4%2F0AY0e-g6cMCFbgwTV.........AFZl50QB77171E..
๐ Spring/Spring Security
์ด๋ฒ ์๊ฐ์๋ ์นด์นด์ค ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. :D ์ฐธ๊ณ : ๊ตฌ๊ธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. ๋ค์ด๋ฒ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. ์์
๋ก๊ทธ์ธ์ ํ๊ธฐ์ํด ํ์ํ API ํค ๋ฐ๊ธ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค. ์นด์นด์ค ๋ก๊ทธ์ธ ๋ฒํผ ๊ตฌํํ๊ธฐ ์ผ๋จ ์นด์นด์ค์์ ์ ๊ณตํ๋ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋ฐ์์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ์ด๋ฏธ์ง๋ฅผ ๋ค์ด ๋ฐ์์ผ๋ฉด, ์ด์ ๋ฒํผ์ ๋งํฌ๋ฅผ ๋ฌ๋ฉด ๋ฉ๋๋ค. Request ์์ฒญ ๋งํฌ {REST_API_KEY} ๋ถ๋ถ์๋ ์ฑ ์์ฑ ์ ๋ฐ๊ธ๋ฐ์ REST API ํค๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๊ณ , ๋๋จธ์ง๋ ์๋ ํ๋ฅผ ๋ณด๊ณ ์๋ง๊ฒ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค. URL์ ์๊น ๋ฐ์ ์ด๋ฏธ์ง์ ํจ๊ป ๋ฃ์ด์ค๋๋ค. (๋ฐ๊ธ ๋ฐ์ผ์ client_id๋ uri๋ ์ง์ ๋ฃ์ผ์
์ผํฉ๋๋ค.) ๊ทธ๋ฆฌ๊ณ ์คํํด..
๐ Spring/Spring Security
๊ตฌ๊ธ, ๋ค์ด๋ฒ, ์นด์นด์ค ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๊ธฐ ์ํด ํ์ํ ํ ํฐ๋ค์ ๋ฐ๊ธ ๋ฐ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. :D ๊ตฌ๊ธ(Google) Google Cloud Platform ํ๋์ ๊ณ์ ์ผ๋ก ๋ชจ๋ Google ์๋น์ค๋ฅผ Google Cloud Platform์ ์ฌ์ฉํ๋ ค๋ฉด ๋ก๊ทธ์ธํ์ธ์. accounts.google.com 1. ๋จผ์ ์ ๋งํฌ๋ก ์ ์ํด์ ์ ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค. 2. ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด - OAuth ํด๋ผ์ด์ธํธ ID ๋ฅผ ํด๋ฆญํฉ๋๋ค. 3. ๋์ ํ๋ฉด ๊ตฌ์ฑ์ ํด๋ฆญํ๊ณ - User Type์ ์ธ๋ถ๋ก ์ค์ ํด์ค๋ค. 4. [์ฑ ์ด๋ฆ], [์ฌ์ฉ์ ์ง์ ์ด๋ฉ์ผ], [๊ฐ๋ฐ์ ์ฐ๋ฝ์ฒ ์ ๋ณด] ๋ง ์
๋ ฅํ๊ณ ๋์ด๊ฐ๋ค. (2) ๋ฒ์, (3) ํ
์คํธ ์ฌ์ฉ์๋ ๋์ด๊ฐ๊ณ ๋์ 5๋ฒ์ ์งํํ๋ฉด ๋ฉ๋๋ค. 5. ๋ค์ [์ฌ์ฉ์ ์ธ์ฆ ์ ..