OAuth 2.0 & OIDC 프로토콜

양현지·2023년 6월 1일
2

Security

목록 보기
11/14

1. Authorization

1) Concept of Authorization

Authentication(인증)과 구분되는 개념으로 사용자의 권한을 확인해주는 절차

ⓐ 인증 : 사용자의 '신원' 확인
ⓑ 인가 : 사용자의 '권한' 확인

  • Example of Authorization

    e.g. 구글, 네이버, 카카오의 <간편 로그인> 서비스
    '무신사'에 회원 가입 시 "카카오 로그인" 선택
    => 카카오에서 사용자 신원을 확인하여 "무신사"에 사용자 정보를 전달

2) OAuth2.0 & OIDC

  • What is network authorization?

    Client(3rd party라고도 하며 제 3자 어플리케이션-무신사)는 사용자(나)의 개인 정보를 사용하고자 한다. 이때 인증 서버는 Client에 사용자의 리소스(개인 정보)를 안전하게 전달하고자 하며 이러한 과정을 "위임 권한"이라고 한다. 즉 사용자가 자신의 개인 정보 관리를 인증 서버에 맡기는 것이다.
    이러한 위임 권한을 수행할 때 OAuth 2.0 프로토콜과 OIDC 프로토콜을 사용할 수 있다.

2. OAuth 2.0

1) OAuth (Open Authorization) 2.0

: 인가를 위한 개방형 표준 프로토콜

  • What is network authorization?

2) Authorization Code Flow

  • User : 웹 애플리케이션 또는 모바일 앱의 사용자(나)
  • Client: 리소스에 접근하기 위해 인증 및 권한 부여를 요청하는 제3자 앱이 클라이언트(App XYZ)
  • Authorization Server: 클라이언트의 요청에 대해 인증 및 권한 부여를 처리하는 서버입니다. 사용자의 동의를 받고, 액세스 토큰을 발급하며, 클라이언트에게 권한을 부여
  • Resource Server : 실제 사용자의 리소스를 가지고 관리하는 서버

3) Scenario for OAuth 2.0

ⓐ Client는 인증 서버에 "authorization request"를 보냄
ⓑ 인증 서버는 사용자 인증을 거쳐 Client에 < authorization code > 를 발급
ⓒ Client는 < authorization code >를 가지고 access token을 요청
ⓓ 인증 서버는 access token을 발급
ⓔ Client는 access token을 가지고 사용자 리소스를 요청
ⓕ 리소스 서버는 인증 서버에 해당 access token이 유효한지 검사 요청
ⓖ 인증 서버가 access token의 유효성 검증을 완료하면 비로소 리소스 서버는 Client에 리소스를 제공하게 된다.

※ ⓔ ~ ⓖ 의 과정이 Web API에 해당

2. OIDC

1) OIDC vs OAuth 2.0

  • OAuth 2.0의 핵심 목적은 '인가'이다. 3rd party에 해당하는 Client에게 사용자(나)의 resource(개인 정보)를 사용할 권한은 부여하고자 함.
  • 반면, OIDC는 사용자의 'ID Token'을 통해 사용자 정보를 제공

2) OIDC

  • OIDC(OpenID Connect)란?
    : OAuth 프로토콜 + "ID Token"

※ Terminology for OpenID

IdP (Identity Provider)

구글, 카카오, 네이버 ( OpenID 서비스를 제공하는 당사자)

RP (Relying Party)

제 3자(Client)로 사용자를 인증하기 위해 IdP에 의존하는 주체

3) Scenario for OIDC

ⓐ RP(eBay,3rd party, client)는 IDP(구글)에 ID Token과 Access Token을 요청
ⓑ IDP는 사용자(나)에게 eBay에 나의 리소스(개인 정보)에 접근할 수 있도록 할지 물어봄
ⓒ IDP는 RP에 'short-lived' Authorization code를 발급
ⓓ RP는 Authorization code를 가지고 IDP에 Access 토근과 ID토큰 요청
ⓔ RP는 Access 토큰과 ID토큰을 가지고 자원 요청을 수행

  • JWT(Json Web Token)형식으로 토큰 전달

    Access Token + ID Token
  • JWT 형식

    Header + Payload + Signature

    JWT를 디코딩하면 다음과 같은 정보를 확인할 수 있다

    Scope(리소스 접근 권한 범위) for Open ID

    • profile: 사용자의 기본 프로필 정보에 대한 액세스 권한
    • email: 사용자의 이메일 주소에 대한 액세스 권한
    • address: 사용자의 주소 정보에 대한 액세스 권한

▶ 마치며
여기까지 네트워크 환경에서 Authorization을 알아보았다.
User 혹은 Process가 시스템의 자원에 접근하는 것 또한 인증과 인가의 절차가 필요하며 이를 "OS Access Control"이라 한다.

0개의 댓글

관련 채용 정보