Topic

OAuth 2.0 및 OpenID Connect

JackerLab 2025. 3. 2. 22:41
728x90
반응형

개요

OAuth 2.0과 OpenID Connect는 웹 및 모바일 애플리케이션에서 안전한 인증(Authentication) 및 권한 부여(Authorization) 를 제공하는 대표적인 표준 프로토콜이다. OAuth 2.0은 리소스 접근 권한을 부여하는 프레임워크이며, OpenID Connect는 OAuth 2.0을 확장하여 사용자 인증 기능을 추가한 프로토콜이다. 본 글에서는 OAuth 2.0과 OpenID Connect의 개념, 차이점, 주요 구성 요소 및 활용 사례를 살펴본다.


1. OAuth 2.0이란?

OAuth 2.0은 타사 애플리케이션이 사용자 비밀번호를 직접 입력받지 않고도 안전하게 리소스에 접근할 수 있도록 설계된 권한 부여 프레임워크이다. 예를 들어, 사용자가 Google 계정을 이용하여 다른 애플리케이션에 로그인할 때 OAuth 2.0이 활용된다.

특징:

  • 비밀번호 공유 없이 타사 애플리케이션이 제한된 접근 권한을 가짐
  • 다양한 권한 부여 방식(Grant Type) 지원
  • 액세스 토큰(Access Token)을 사용한 인증
  • 보안 강화를 위한 제한된 토큰 수명 및 갱신 토큰(Refresh Token) 지원

OAuth 2.0의 주요 구성 요소:

  • 리소스 소유자(Resource Owner): 보호된 리소스를 소유한 사용자
  • 클라이언트(Client): 사용자 대신 리소스에 접근하려는 애플리케이션
  • 인증 서버(Authorization Server): 액세스 토큰을 발급하는 서버
  • 리소스 서버(Resource Server): 보호된 리소스를 관리하는 서버

OAuth 2.0의 주요 권한 부여 방식(Grant Type):

  1. Authorization Code Grant: 가장 일반적인 방식으로, 보안성이 뛰어남 (예: 웹 애플리케이션 로그인)
  2. Implicit Grant: 클라이언트 측에서 토큰을 직접 받아오는 방식 (현재는 보안 문제로 권장되지 않음)
  3. Client Credentials Grant: 클라이언트가 자체적으로 인증을 수행하는 방식 (예: 서버 간 API 호출)
  4. Resource Owner Password Credentials Grant: 사용자 이름과 비밀번호를 직접 입력하여 인증 (보안상 비추천)
  5. Device Authorization Grant: 입력이 어려운 디바이스(TV, IoT)에서 인증을 수행하는 방식

2. OpenID Connect란?

OpenID Connect(OIDC)는 OAuth 2.0을 기반으로 사용자 인증(Authentication) 기능을 추가한 프로토콜이다. 즉, OAuth 2.0이 권한 부여를 담당한다면, OpenID Connect는 사용자가 누구인지 인증하는 역할을 수행한다.

특징:

  • OAuth 2.0을 확장하여 인증(Authentication) 기능 추가
  • ID 토큰(ID Token)을 사용하여 사용자 정보 제공
  • JSON Web Token(JWT) 기반의 안전한 사용자 정보 전달
  • 다중 인증(Multi-Factor Authentication, MFA)과 결합 가능

OIDC의 주요 구성 요소:

  • OpenID 제공자(OpenID Provider, OP): 사용자 인증을 수행하는 서버
  • RP(Relying Party): 인증된 사용자 정보를 활용하는 애플리케이션
  • ID 토큰(ID Token): 사용자의 신원 정보를 포함하는 JWT 토큰
  • UserInfo 엔드포인트: 사용자 정보를 제공하는 API

OIDC 흐름:

  1. 사용자가 로그인을 시도
  2. OpenID 제공자가 사용자 인증을 수행
  3. ID 토큰을 생성하여 클라이언트에게 전달
  4. 클라이언트가 ID 토큰을 검증하여 사용자를 식별

3. OAuth 2.0 vs OpenID Connect 비교

비교 항목 OAuth 2.0 OpenID Connect
목적 리소스 접근 권한 부여 사용자 인증 및 리소스 접근 권한 부여
주요 토큰 액세스 토큰(Access Token) ID 토큰(ID Token) + 액세스 토큰
사용 사례 API 호출, 권한 위임 소셜 로그인, 싱글 사인온(SSO)
보안 모델 권한 위임 기반 인증 및 권한 위임 모두 포함
기반 프로토콜 OAuth 2.0 OAuth 2.0 확장

4. OAuth 2.0 및 OpenID Connect 활용 사례

  1. 소셜 로그인: Google, Facebook, Apple ID 등으로 로그인 가능
  2. 싱글 사인온(SSO): 하나의 계정으로 여러 서비스에 로그인 가능
  3. API 보안: 외부 애플리케이션이 사용자 데이터에 안전하게 접근할 수 있도록 지원
  4. IoT 및 모바일 애플리케이션 인증: 스마트 디바이스에서 보안 인증 활용
  5. 기업 환경에서의 사용자 인증 관리: OAuth 2.0 및 OIDC 기반의 중앙 집중형 ID 관리 시스템

5. 보안 고려 사항 및 최적화 방안

보안 강화 방법:

  • OAuth 2.0에서는 **PKCE(Proof Key for Code Exchange)**를 사용하여 인증 코드 도난 방지
  • 액세스 토큰의 만료 시간을 짧게 설정하고 갱신 토큰(Refresh Token) 사용
  • OIDC에서 **ID 토큰의 서명 검증(JWT 검증)**을 철저히 수행
  • HTTPS를 필수적으로 사용하여 데이터 전송 보안 유지
  • 최소 권한 원칙(Least Privilege Principle) 적용하여 불필요한 권한 부여 방지

결론

OAuth 2.0과 OpenID Connect는 현대 웹 및 모바일 환경에서 안전한 인증 및 권한 부여를 제공하는 필수적인 기술이다. OAuth 2.0은 리소스 접근 권한을 관리하는 데 중점을 두며, OpenID Connect는 사용자 인증을 포함하여 더욱 강력한 보안 기능을 제공한다. 기업과 개발자는 애플리케이션의 요구사항에 맞춰 적절한 인증 및 보안 메커니즘을 선택해야 한다.

728x90
반응형

'Topic' 카테고리의 다른 글

Docker  (0) 2025.03.03
SSL/TLS 핸드셰이크(Handshake)  (0) 2025.03.03
관계형 데이터베이스(RDBMS) vs NoSQL  (0) 2025.02.26
데이터 정규화 및 비정규화  (0) 2025.02.26
생체 인증(Biometrics) 및 패스키(Passkey)  (0) 2025.02.26