• ABOUT
  • POSTS
  • GUESTBOOK

Β© 2025 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)
λ‹€μŒ κΈ€
λ‹€μŒ 글이 μ—†μŠ΅λ‹ˆλ‹€ ( Ξ‡ . Ξ‡)
μž₯μ‹μš© 둜κ³