๐Ÿ’ Spring/Spring Security

๐Ÿ’ Spring/Spring Security

[Spring Security] ์Šคํ”„๋ง ๋ถ€ํŠธ OAuth2-client๋ฅผ ์ด์šฉํ•œ ์†Œ์…œ(๊ตฌ๊ธ€, ๋„ค์ด๋ฒ„, ์นด์นด์˜ค) ๋กœ๊ทธ์ธ ํ•˜๊ธฐ

์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ง์ ‘ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์š”์ฒญ์„ ๊ตฌํ˜„ํ•˜์—ฌ์„œ 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

[Spring Security] ์Šคํ”„๋ง ๋ถ€ํŠธ OAuth2๋ฅผ ์ด์šฉํ•œ ๋„ค์ด๋ฒ„ ๊ณ„์ • ๋กœ๊ทธ์ธ (์ง์ ‘ ๊ตฌํ˜„)

์ด๋ฒˆ์—๋Š” ๋„ค์ด๋ฒ„ ์•„์ด๋””๋กœ ๋กœ๊ทธ์ธ(๋„ค์•„๋กœ) ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ  : ๊ตฌ๊ธ€ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์นด์นด์˜ค ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ํ•˜๊ธฐ์œ„ํ•ด ํ•„์š”ํ•œ API ํ‚ค ๋ฐœ๊ธ‰์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. 1. ๋„ค์•„๋กœ ์—ฐ๋™ URL ์š”์ฒญ ์•„๋ž˜์ฒ˜๋Ÿผ ์›ํ•˜๋Š” ํƒœ๊ทธ์˜ ์š”์ฒญ URL์„ ์™„์„ฑ ์‹œ์ผœ์„œ ๋„ฃ์–ด์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. (state๋Š” ์›๋ž˜ ๊ณ„์† ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด "state"๋ผ๋Š” ๊ฐ’์œผ๋กœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.) ๋„ค์ด๋ฒ„๋กœ ๋กœ๊ทธ์ธ ํ•˜๊ธฐ 2. Redirect URI ์ฒ˜๋ฆฌํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ ์ƒ์„ฑ ์ €๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Redirect URI๋ฅผ "/login/oauth/code/naver"๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. @Controller @RequestMapping(..

๐Ÿ’ Spring/Spring Security

[Spring Security] ์Šคํ”„๋ง ๋ถ€ํŠธ OAuth2๋ฅผ ์ด์šฉํ•œ ๊ตฌ๊ธ€ ๊ณ„์ • ๋กœ๊ทธ์ธ (์ง์ ‘ ๊ตฌํ˜„)

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๊ตฌ๊ธ€๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฐธ๊ณ  : ๋„ค์ด๋ฒ„ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์นด์นด์˜ค ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ํ•˜๊ธฐ์œ„ํ•ด ํ•„์š”ํ•œ API ํ‚ค ๋ฐœ๊ธ‰์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. 1. ์ธ์ฆ ์ฝ”๋“œ ๋ฐ›๊ธฐ ์›ํ•˜๋Š” ํƒœ๊ทธ์— ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค. ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ ํ•ด๋‹น ํƒœ๊ทธ๋ฅผ ํด๋ฆญํ•˜๊ฒŒ ๋˜๋ฉด, ๊ตฌ๊ธ€ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋˜๊ณ , ์šฐ๋ฆฌ๊ฐ€ ์„ค์ •ํ•œ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ URI๋กœ ์ฝ”๋“œ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง ํŒŒ๋ผ๋ฏธํ„ฐ์— code๊ฐ’์ด ๋‹ด๊ฒจ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. http://localhost:8080/login/oauth2/code/google?code=4%2F0AY0e-g6cMCFbgwTV.........AFZl50QB77171E..

๐Ÿ’ Spring/Spring Security

[Spring Security] ์Šคํ”„๋ง ๋ถ€ํŠธ OAuth2๋ฅผ ์ด์šฉํ•œ ์นด์นด์˜ค ๊ณ„์ • ๋กœ๊ทธ์ธ (์ง์ ‘ ๊ตฌํ˜„)

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์นด์นด์˜ค ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. :D ์ฐธ๊ณ  : ๊ตฌ๊ธ€ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋„ค์ด๋ฒ„ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ํ•˜๊ธฐ์œ„ํ•ด ํ•„์š”ํ•œ API ํ‚ค ๋ฐœ๊ธ‰์€ ์—ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์นด์นด์˜ค ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ผ๋‹จ ์นด์นด์˜ค์—์„œ ์ œ๊ณตํ•˜๋Š” ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด ๋ฐ›์•˜์œผ๋ฉด, ์ด์ œ ๋ฒ„ํŠผ์— ๋งํฌ๋ฅผ ๋‹ฌ๋ฉด ๋ฉ๋‹ˆ๋‹ค. Request ์š”์ฒญ ๋งํฌ {REST_API_KEY} ๋ถ€๋ถ„์—๋Š” ์•ฑ ์ƒ์„ฑ ์‹œ ๋ฐœ๊ธ‰๋ฐ›์€ REST API ํ‚ค๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜๊ณ , ๋‚˜๋จธ์ง€๋„ ์•„๋ž˜ ํ‘œ๋ฅผ ๋ณด๊ณ  ์•Œ๋งž๊ฒŒ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. URL์„ ์•„๊นŒ ๋ฐ›์€ ์ด๋ฏธ์ง€์™€ ํ•จ๊ป˜ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค. (๋ฐœ๊ธ‰ ๋ฐ›์œผ์‹  client_id๋ž‘ uri๋Š” ์ง์ ‘ ๋„ฃ์œผ์…”์•ผํ•ฉ๋‹ˆ๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ํ•ด..

๐Ÿ’ Spring/Spring Security

[Spring Security] ์Šคํ”„๋ง ๋ถ€ํŠธ OAuth2 ๊ตฌ๊ธ€, ๋„ค์ด๋ฒ„, ์นด์นด์˜ค API ํ‚ค ๋ฐœ๊ธ‰ํ•˜๊ธฐ

๊ตฌ๊ธ€, ๋„ค์ด๋ฒ„, ์นด์นด์˜ค ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ† ํฐ๋“ค์„ ๋ฐœ๊ธ‰ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. :D ๊ตฌ๊ธ€(Google) Google Cloud Platform ํ•˜๋‚˜์˜ ๊ณ„์ •์œผ๋กœ ๋ชจ๋“  Google ์„œ๋น„์Šค๋ฅผ Google Cloud Platform์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋กœ๊ทธ์ธํ•˜์„ธ์š”. accounts.google.com 1. ๋จผ์ € ์œ„ ๋งํฌ๋กœ ์ ‘์†ํ•ด์„œ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. 2. ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด - OAuth ํด๋ผ์ด์–ธํŠธ ID ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. 3. ๋™์˜ ํ™”๋ฉด ๊ตฌ์„ฑ์„ ํด๋ฆญํ•˜๊ณ  - User Type์„ ์™ธ๋ถ€๋กœ ์„ค์ •ํ•ด์ค€๋‹ค. 4. [์•ฑ ์ด๋ฆ„], [์‚ฌ์šฉ์ž ์ง€์› ์ด๋ฉ”์ผ], [๊ฐœ๋ฐœ์ž ์—ฐ๋ฝ์ฒ˜ ์ •๋ณด] ๋งŒ ์ž…๋ ฅํ•˜๊ณ  ๋„˜์–ด๊ฐ„๋‹ค. (2) ๋ฒ”์œ„, (3) ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž๋Š” ๋„˜์–ด๊ฐ€๊ณ  ๋‚˜์„œ 5๋ฒˆ์„ ์ง„ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 5. ๋‹ค์‹œ [์‚ฌ์šฉ์ž ์ธ์ฆ ์ •..

iseunghan
'๐Ÿ’ Spring/Spring Security' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (4 Page)