Develope/기타

OpenID와 OAuth: 헷갈리는 두 기술, 명확히 구분하기

oper0116 2025. 8. 21. 21:20
반응형

웹 서비스 개발에서 인증(Authentication)권한 위임(Authorization) 은 핵심 요소다.
이때 자주 등장하는 기술이 바로 OpenIDOAuth다. 이름은 비슷하지만, 목적과 쓰임은 확연히 다르다.


🔐 OpenID: 사용자의 신원을 인증한다

  • 정의: 사용자가 누구인지 확인하는 프로토콜
  • 사례: 구글·네이버·카카오 계정으로 다른 서비스에 로그인

동작 흐름

  1. 사용자가 "구글 계정으로 로그인"을 선택한다.
  2. OpenID 제공자가 로그인 과정을 처리한다.
  3. 웹사이트는 인증 결과를 받아 사용자의 신원을 확인한다.

👉 핵심: OpenID는 인증(Authentication)에 집중한다.


OAuth: 자원 접근 권한을 위임한다

  • 정의: 사용자가 직접 비밀번호를 제공하지 않고도 제3자 앱이 일정 범위 내에서 자원에 접근하도록 허용하는 프로토콜
  • 사례: 어떤 앱이 내 구글 캘린더나 드라이브 파일에 접근하도록 승인
  • 동작 흐름:
    1. 제3자 앱이 사용자에게 권한을 요청한다.
    2. 사용자가 권한을 승인한다.
    3. OAuth 서버가 Access Token 발급한다.
    4. 앱은 토큰을 사용해 자원 서버에 접근한다.

👉 핵심: OAuth는 권한 위임(Authorization)에 초점을 둔다.


OpenID vs OAuth: 한눈에 비교

구분 OpenID OAuth
목적 인증(Authentication) 권한 위임(Authorization)
질문 "누구인가?" "이 앱이 접근해도 되나?"
토큰 없음 Access Token 사용
대표 사례 구글/네이버 로그인 구글 API, 트위터 API 사용

OpenID Connect (OIDC): 둘 다 하고 싶을 때

현대 서비스 대부분은 OpenID + OAuth를 합친 OpenID Connect (OIDC)를 사용한다.

  • 로그인(인증) + API 접근 권한(권한 위임)
  • 구글/카카오/네이버 로그인은 사실상 전부 OIDC 기반

마무리

  • OpenID: 사용자의 신원을 인증하는 기술
  • OAuth: 자원 접근 권한을 위임하는 기술
  • OIDC: 인증과 권한 위임을 통합한 현대적 표준
반응형