Loading...
2021. 2. 27. 16:39

[FastAPI] 7. Google-auth ๋ฐ PyJWT๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 2

์ง€๋‚œ ๊ธ€์— ์ด์–ด์„œ ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” OAuth2 ์ธ์ฆ ํ† ํฐ์„ API์—์„œ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. HTTP Header ์šฐ๋ฆฌ๊ฐ€ REST API๋ฅผ ํ†ต์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” HTTP ํ”„๋กœํ† ์ฝœ์€ Header์™€ Body๋ผ๋Š” ๊ตฌ์กฐ๋กœ ์ด๋ค„์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Header์™€ Body ๋ชจ๋‘ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ Header์—๋Š” ์ „์†กํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋ฒ„ ํ˜น์€ ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด ๋‚ด์ง€ ์ „์†กํ•˜๊ณ ์ž ํ•˜๋Š” ๋Œ€์ƒ์— ๋ถ€๊ฐ€์ ์ธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๋„˜๊ฒจ์ค„ ๋–„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‰ฌ์šด ์˜ˆ์‹œ๋กœ ์œ„์™€ ๊ฐ™์ด ๋กœ์ปฌ ์„œ๋ฒ„์—๊ฒŒ GET ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ˜ธ์ถœ์„ ์ „๋‹ฌํ–ˆ์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ๋Œ€์ƒ์ž์—๊ฒŒ ๋ถ€๊ฐ€์ ์ธ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก Key-value ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘์—์„œ ๊ฐ€..

2021. 2. 13. 13:26

[FastAPI] 6. Google-auth ๋ฐ PyJWT๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 1

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ธ์ฆ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. Spring์—์„œ๋Š” Spring Security๋ผ๋Š” ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ธ์ฆ์— ๋Œ€ํ•œ ๊ตฌํ˜„์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ ๋„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•˜์—ฌ Google ๊ฐœ๋ฐœ์ž ์ฝ˜์†”์—์„œ Client ID๋ฅผ ๋ฏธ๋ฆฌ ๋ฐœ๊ธ‰๋ฐ›์€ ํ›„ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ๊ตฌํ˜„์ฒด๋งŒ ์ž˜ ์‚ฌ์šฉํ•˜๋ฉด ์–ด๋ ต์ง€ ์•Š๊ฒŒ OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์ฃ . FastAPI๋„ ์ด์™€ ๋น„์Šทํ•˜๊ฒŒ OAuth2 ์ธ์ฆ์„ ๊ตฌํ˜„ํ•˜์ง€๋งŒ JWT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์—๋Š” ๋ณ„๋„์˜ ๊ตฌํ˜„ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ด ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  OAuth2 ์ธ์ฆ์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. [Spring boot] Spring boot Security๋กœ ์‹œ์ž‘ํ•ด๋ณด๋Š” ์ธ์ฆ Spring ..