Skip to content

๐Ÿšจ ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„์—์„œ ์†Œ์…œ๋กœ๊ทธ์ธ์ด ๋˜์ง€ ์•Š๋Š” ์—๋Ÿฌ ํ•ด๊ฒฐย #246

@uijin-j

Description

@uijin-j

๐Ÿ“‘ Description

์–ด๋–ค ์ด์œ ์—์„œ ์ธ์ง€.. ํ”„๋กœ๋•์…˜ ์„œ๋ฒ„์—์„œ ์†Œ์…œ ๋กœ๊ทธ์ธ์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๐Ÿฅฒ
์ •ํ™•ํ•œ ์ด์œ ๋ฅผ ๋ฐœ๊ฒฌํ•˜์ง„ ๋ชปํ–ˆ์ง€๋งŒ ์•„๋ฌด๋ž˜๋„

์†Œ์…œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ํด๋ฆญ(FE ์„œ๋ฒ„) โ†’ FE์—์„œ BE๋กœ ๊นƒํ—ˆ๋ธŒ URL ์š”์ฒญ(FE โ†’ BE) โ†’ ๊นƒํ—ˆ๋ธŒ ๋งํฌ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‘๋‹ต(BE โ†’ FE) โ†’
๊นƒํ—ˆ๋ธŒ ๋กœ๊ทธ์ธ ์„ฑ๊ณต ํ›„ Code๋ฅผ ๋ฐ›์Œ(๊นƒํ—ˆ๋ธŒ โ†’ FE) โ†’ FE์—์„œ BE๋กœ Code ์ „๋‹ฌ(FE โ†’ BE) โ†’ ์„œ๋ฒ„์—์„œ ๊นƒํ—ˆ๋ธŒ๋กœ Code๋ฅผ ๋ณด๋‚ธ ํ›„ Access Token ๋ฐ›์Œ(BE โ†’ ๊นƒํ—ˆ๋ธŒ) โ†’ ํšŒ์›๊ฐ€์ž… ๋“ฑ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ฒ˜๋ฆฌ ํ›„ ๋กœ๊ทธ์ธ ์‘๋‹ต(BE โ†’ FE)

์›๋ž˜ OAuth๋Š” ๋กœ๊ทธ์ธ ํ›„ Code๋ฅผ ๋ฐ›๊ณ  Code๋ฅผ ํ†ตํ•ด Token์„ ๋ฐ›๋Š” ๋กœ์ง์ด ๋ชจ๋‘ ํ•˜๋‚˜๋กœ ๋ฌถ์—ฌ์žˆ์Œ! ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ Code๋ฅผ ๋ฐ›๋Š” ๊ฒƒ๊ณผ Token์„ ๋ฐ›๋Š” ๊ณผ์ •์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์Œ.. ์•„๋ฌด๋Œ€๋กœ ์ด๊ฒƒ์ด ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™๋‹ค..

๐ŸŽฏ ๊ฒฐ๋ก 

Spring Security OAuth2 Client๋Š” ํ˜„์žฌ ์šฐ๋ฆฌ์˜ ์ƒํ™ฉ์— ์ ํ•ฉํ•˜์ง€ ์•Š์Œ์œผ๋กœ.. ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ž!!

๊ตฌ์ฒด์ ์ธ OAuth ํ๋ฆ„

1๏ธโƒฃ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ด๋“œํ”ฝ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€์—์„œ ๊นƒํ—ˆ๋ธŒ ๋กœ๊ทธ์ธ์„ ๋ˆ„๋ฅด๋ฉด

GET https://github.com/login/oauth/authorize?client_id={client-id}

๋กœ ์š”์ฒญํ•œ๋‹ค! (๊ทธ๋Ÿผ ๊นƒํ—ˆ๋ธŒ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ๋จ!)
โœ”๏ธ ๊ธฐ์กด ๋ฐฉ์‹: ํ”„๋ก ํŠธ์—์„œ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ๊นƒํ—ˆ๋ธŒ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ URI ์š”์ฒญ
โœ”๏ธ {client-id}์— ๋“ค์–ด๊ฐ€๋Š” client-id๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๋ณ„๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค!
- ๊ฐœ๋ฐœ(dev) ํ™˜๊ฒฝ: 5560e1043cdd91659b3e
- ํ”„๋กœ๋•์…˜(prod) ํ™˜๊ฒฝ: 09fbda0af1883456f365

2๏ธโƒฃ ์‚ฌ์šฉ์ž๊ฐ€ ๊นƒํ—ˆ๋ธŒ ๋กœ๊ทธ์ธ์„ ์™„๋ฃŒํ•˜๋ฉด, ๊ธฐ์กด๊ณผ ๊ฐ™์ด ์ธ๊ฐ€ ์ฝ”๋“œ(code)๋ฅผ ๋ณด๋‚ด์คŒ

https://sidepeek.site/login/validation?code={code}

โ— ๊ธฐ์กด๊ณผ ๋‹ค๋ฅธ ์ ์€ status๋Š” ํ•จ๊ป˜ ์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

3๏ธโƒฃ ์ธ๊ฐ€ ์ฝ”๋“œ(code)์™€ ํ•จ๊ป˜ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„๋กœ ๋กœ๊ทธ์ธ ์š”์ฒญ
POST /api/v1/auth/login/github?code={code}
โœ”๏ธ ๊ธฐ์กด ๋ฐฉ์‹
GET /api/v1/login/oauth2/code/github?code={code}&status={status}
โ—๊ธฐ์กด๊ณผ HTTP METHOD, PATH, PARAMETER๊ฐ€ ๋ชจ๋‘ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹คใ…œใ…œ
โ—์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ API ๋ฌธ์„œ๋ฅผ ์—…๋กœ๋“œ ํ•ด๋†จ์Šต๋‹ˆ๋‹ค! ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”:)

4๏ธโƒฃ ๋ฐฑ์—”๋“œ์—์„œ ๋กœ๊ทธ์ธ ์‘๋‹ต

(์ฐธ๊ณ ์ž๋ฃŒ: ๊นƒํ—ˆ๋ธŒ ์†Œ์…œ ๋กœ๊ทธ์ธ ๊ณต์‹ ๋ฌธ์„œ)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions