콘텐츠로 바로가기

OAuth2 and OIDC

PKCE(Proof Key for Code Exchange): 코드 탈취 방지. SPA/모바일 앱에서 필수.

sys.entry
M

Me

hyunyoun's Blog

software-engineering-devops2 min read

OAuth2 and OIDC

OAuth2: 리소스 접근 위임 프레임워크 (인가). OIDC: OAuth2 위에 구축된 신원 확인 레이어 (인증).

핵심 구분

OAuth2 OIDC
목적 인가 (접근 권한 위임) 인증 (신원 확인)
토큰 Access Token ID Token (JWT) + Access Token
질문 "이 앱이 내 파일에 접근해도 되나?" "이 사용자가 누구인가?"

Authorization Code Flow (권장)

CODE
1. 앱 → 인가 서버: 인가 요청 (code_challenge PKCE)
2. 사용자: 로그인 + 동의
3. 인가 서버 → 앱: code 반환
4. 앱 → 인가 서버: code + code_verifier 교환
5. 인가 서버 → 앱: Access Token + Refresh Token + ID Token

PKCE(Proof Key for Code Exchange): 코드 탈취 방지. SPA/모바일 앱에서 필수.

토큰 유형

  • Access Token: 리소스 서버 접근 (단명, 수분~1시간)
  • Refresh Token: 새 Access Token 발급 (장명, 저장 시 암호화 필수)
  • ID Token: JWT, 사용자 정보 포함 (sub, email, name 등 클레임)

흔한 실수

  • Access Token을 localStorage에 저장 (XSS 취약) → httpOnly 쿠키 사용
  • ID Token을 API 인가에 사용 (목적 혼용)
  • Refresh Token 순환(rotation) 미적용 → 탈취 감지 불가

연결 노트