• ABOUT
  • PORTFOLIO
  • POSTS
  • GUESTBOOK

ยฉ 2025-2026 BlueCool12 All rights reserved.

2026.02.20Tips

๐Ÿ†” OAuth 2.0 & OIDC ๊ฐœ๋… ์ •๋ฆฌ

1. OAuth (Open Authorization)์˜ ์ •์˜

OAuth๋Š” ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ œ3์ž์—๊ฒŒ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ํŠน์ • ์›น์‚ฌ์ดํŠธ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ €์žฅ๋œ ๊ฐœ์ธ ์ •๋ณด์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ธ๊ฐ€(Authorization) ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

๋งˆ์น˜ ํ˜ธํ…” ์˜ˆ์•ฝ ์‹œ ๋ฐ›๋Š” ์นด๋“œ ํ‚ค์™€ ๊ฐ™์ด ์นด๋“œ ํ‚ค ์ž์ฒด๊ฐ€ ์ด์šฉ์ž์˜ ์‹ ๋ถ„์ฆ(ID/PW)์€ ์•„๋‹ˆ์ง€๋งŒ ํŠน์ • ๋ฐฉ(๋ฆฌ์†Œ์Šค)์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ฆ๋ช…ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.


2. OAuth 1.0๊ณผ OAuth 2.0

OAuth๋Š” ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์˜ ๊ธ‰์„ฑ์žฅ๊ณผ ๋ณด์•ˆ ์š”๊ตฌ์‚ฌํ•ญ์˜ ๋ณ€ํ™”์— ๋งž์ถฐ 1.0์—์„œ 2.0์œผ๋กœ ์ง„ํ™”ํ•˜์˜€๋‹ค. ๋‘ ๋ฒ„์ „์€ ๊ตฌ์กฐ์  ์ฐจ์ด๊ฐ€ ํฌ๋ฉฐ ์ƒํ˜ธ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค.

OAuth 1.0 (์ดˆ๊ธฐ ํ‘œ์ค€)
2007๋…„ ํŠธ์œ„ํ„ฐ์™€ ๊ตฌ๊ธ€ ๋“ฑ์ด ์ฃผ๋„ํ•˜์—ฌ ๋…ผ์˜๋ฅผ ์‹œ์ž‘ํ–ˆ๊ณ  2010๋…„ RFC 5849๋กœ ํ‘œ์ค€ํ™”๋˜์—ˆ๋‹ค.

  • ํŠน์ง•
    - ๋ชจ๋“  HTTP ์š”์ฒญ๋งˆ๋‹ค ๋””์ง€ํ„ธ ์„œ๋ช…(HMAC-SHA1 ๋“ฑ)์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๊ฒ€์ฆํ•œ๋‹ค.
  • ํ•œ๊ณ„
    - ์„œ๋ช… ์ƒ์„ฑ ๋กœ์ง์ด ๋งค์šฐ ๋ณต์žกํ•˜์—ฌ ๊ตฌํ˜„ ๋‚œ๋„๊ฐ€ ๋†’์œผ๋ฉฐ ์›น ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์— ์น˜์ค‘๋˜์–ด ์žˆ์–ด ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™˜๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•˜๊ธฐ ์–ด๋ ต๋‹ค.


OAuth 2.0 (ํ˜„๋Œ€ ํ‘œ์ค€)
1.0์˜ ๋ณต์žก์„ฑ๊ณผ ํ•œ๊ณ„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 2012๋…„ RFC 6749๋ฅผ ํ†ตํ•ด ๋ฐœํ‘œ๋˜์—ˆ๋‹ค. ํ˜„์žฌ๊นŒ์ง€๋„ ์ „ ์„ธ๊ณ„์ ์ธ ์—…๊ณ„ ํ‘œ์ค€์œผ๋กœ ์ž๋ฆฌ ์žก๊ณ  ์žˆ๋‹ค.

OAuth 2.0 ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์‹œ์Šคํ…œ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋‹ค์Œ์˜ ๋„ค ๊ฐ€์ง€ ์—ญํ• ๋กœ ์ •์˜ํ•œ๋‹ค.

Resource Owner (๋ฆฌ์†Œ์Šค ์†Œ์œ ์ž): ์ž์‹ ์˜ ์ •๋ณด์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์‚ฌ์šฉ์ž
Client (ํด๋ผ์ด์–ธํŠธ): ์‚ฌ์šฉ์ž์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋ ค๋Š” ์ œ3์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
Resource Server (๋ฆฌ์†Œ์Šค ์„œ๋ฒ„): ์‚ฌ์šฉ์ž์˜ ๋ณดํ˜ธ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ์„œ๋ฒ„ (Google Drive, Kakao Profile)
Authorization Server (์ธ๊ฐ€ ์„œ๋ฒ„): ์‚ฌ์šฉ์ž์˜ ๋™์˜๋ฅผ ํ™•์ธํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ์— Access Token์„ ๋ฐœ๊ธ‰ํ•˜๋Š” ์„œ๋ฒ„


  • ํŠน์ง•
    - ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์˜ ์„œ๋ช… ๋ฐฉ์‹ ๋Œ€์‹  ์ „์†ก ๊ณ„์ธต ๋ณด์•ˆ(HTTPS/TLS)์— ์˜์กดํ•˜์—ฌ ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๊ณ  ๊ตฌํ˜„ ์ƒ์‚ฐ์„ฑ์„ ๋†’์˜€๋‹ค.
    - ํด๋ผ์ด์–ธํŠธ์˜ ํŠน์„ฑ(์›น, ๋ชจ๋ฐ”์ผ, ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹  ๋“ฑ)์— ๋”ฐ๋ผ ์ตœ์ ํ™”๋œ 4๊ฐ€์ง€ ์ด์ƒ์˜ ์Šน์ธ ๋ฐฉ์‹(Grant Types)์„ ์ œ๊ณตํ•œ๋‹ค.
    - ์ธ์ฆ ์„œ๋ฒ„์™€ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„์˜ ์—ญํ• ์„ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ํ™•์žฅ์— ์šฉ์ดํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.
    - ์‹ค์ œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด Access Token์„ ์‚ฌ์šฉํ•œ๋‹ค.


3. OpenID Connect (OIDC)

OAuth 2.0์€ ์ธ๊ฐ€๋ฅผ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ธ์ฆ ๊ธฐ๋Šฅ์€ ํ‘œ์ค€์— ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์•˜๋‹ค. ์ด๋Ÿฐ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด 2014๋…„ OAuth 2.0 ํ”„๋กœํ† ์ฝœ ๊ณ„์ธต ์œ„์— ๊ตฌ์ถ•๋œ ์‹ ์› ํ™•์ธ ํ‘œ์ค€์ด OIDC์ด๋‹ค.

OIDC๋Š” OAuth 2.0์˜ ํ๋ฆ„์„ ๊ทธ๋Œ€๋กœ ๊ณ„์Šนํ•˜๋ฉด์„œ๋„ ์‚ฌ์šฉ์ž์˜ ์‹ ์› ์ •๋ณด๋ฅผ ๋‹ด์€ ID Token์„ ์ถ”๊ฐ€๋กœ ๋ฐœํ–‰ํ•œ๋‹ค๋Š” ์ ์ด ํ•ต์‹ฌ์ด๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ธ์ฆ ์š”์ฒญ ์‹œ scope ๋งค๊ฐœ๋ณ€์ˆ˜์— openid๋ฅผ ํฌํ•จํ•˜๋ฉด ์„œ๋ฒ„๋Š” Access Token๊ณผ ํ•จ๊ป˜ ID Token์„ ๋ฐœ๊ธ‰ํ•œ๋‹ค. ์ด ํ† ํฐ์€ JWT ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์‹ ์› ์ •๋ณด๋ฅผ ๊ตฌ์กฐํ™”ํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐœ๊ธ‰๋ฐ›์€ ID Token์„ ์ง์ ‘ ํ•ด๋…ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๊ณ ์œ  ์‹๋ณ„์ž(sub), ์ด๋ฆ„, ์ด๋ฉ”์ผ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ฆ‰๊ฐ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด OAuth 2.0์—์„œ๋Š” ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด Access Token์„ ์‚ฌ์šฉํ•˜์—ฌ ์œ ์ €์ •๋ณด API๋ฅผ ์ถ”๊ฐ€๋กœ ํ˜ธ์ถœํ•ด์•ผ ํ–ˆ์œผ๋‚˜ OIDC๋Š” ํ† ํฐ ์ž์ฒด์— ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์–ด ํ†ต์‹  ํšŸ์ˆ˜๋ฅผ ์ค„์—ฌ์ค€๋‹ค.

๋˜ํ•œ ์„œ๋น„์Šค ์ œ๊ณต์ž๋“ค์ด ๋™์ผํ•œ OIDC ๊ทœ๊ฒฉ์„ ๋”ฐ๋ฅด๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ํ‘œ์ค€ํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์˜ ์‹ ์› ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์—์„œ ํ•˜๋‚˜์˜ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋‹จ์ผ ๋กœ๊ทธ์ธ(SSO) ์‹œ์Šคํ…œ ๊ตฌ์ถ•์˜ ํ•„์ˆ˜ ๊ธฐ์ˆ ๋กœ ์ž๋ฆฌ ์žก์•˜๋‹ค.

ๅ‰ใฎ่จ˜ไบ‹
๐Ÿ” ์›น ์„œ๋น„์Šค ์ธ์ฆ/์ธ๊ฐ€ ์ดํ•ด์™€ JWT ๋กœ๊ทธ์ธ ๊ตฌํ˜„ (ft. NestJS)
ๆฌกใฎ่จ˜ไบ‹
โš“ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํ•ต์‹ฌ ๊ตฌ์กฐ์™€ ๋™์ž‘ ์›๋ฆฌ ์ •๋ฆฌ
่ฃ…้ฃพใƒญใ‚ด