콘텐츠로 이동

OIDC (OpenID Connect)

OpenID Connect (OIDC)OAuth 2.0 프로토콜 위에 구축된 간단한 ID 계층(Identity Layer)입니다. OAuth 2.0이 권한 부여(Authorization, "내 페이스북 사진에 접근할 권한을 줄게")에 초점을 맞췄다면, OIDC는 인증(Authentication, "나는 누구야")에 초점을 맞춘 표준입니다.

1. 등장 배경 (OAuth 2.0 vs OIDC)

  • OAuth 2.0: 원래 인가(Authorization)를 위한 것이지 인증 프로토콜이 아니었습니다. 하지만 구글 로그인, 페이스북 로그인처럼 인증 용도로 변칙적으로 사용되면서 표준화의 필요성이 대두되었습니다.
  • OIDC: OAuth 2.0의 흐름을 그대로 따르면서, 사용자 신원 정보를 표준화된 포맷으로 전달하는 기능을 추가했습니다.

2. 핵심 개념: ID Token

OIDC의 가장 큰 특징은 ID Token이라는 새로운 토큰을 도입한 것입니다.

  • Access Token (OAuth 2.0): 리소스 서버에 접근할 수 있는 열쇠.
  • ID Token (OIDC): 사용자의 신원 정보(이름, 이메일 등)를 담고 있는 JWT. 클라이언트는 이 토큰을 열어보고 "아, 지금 로그인한 사람이 홍길동이구나"라고 알 수 있습니다.

3. 동작 흐름

  1. 로그인 요청: 사용자가 "Google로 로그인" 버튼을 클릭합니다.
  2. 인증 및 동의: 구글 로그인 페이지에서 ID/PW를 입력하고 권한을 허용합니다.
  3. 토큰 발급: 구글 인증 서버는 클라이언트 앱에게 Access Token과 함께 ID Token을 발급해 줍니다.
  4. 검증 및 로그인 처리: 클라이언트 앱은 ID Token(JWT)을 검증하고, 그 안의 사용자 정보를 이용해 자체 로그인을 완료합니다.

4. 왜 OIDC를 쓰는가?

  • 표준화: 구글, 카카오, 네이버 등 소셜 로그인 구현 방식이 통일됩니다.
  • 편의성: 개발자가 사용자 인증 정보를 얻기 위해 별도의 API(GET /user/profile)를 호출할 필요 없이, 토큰만 받으면 그 안에 정보가 다 들어있습니다.