본문 바로가기
Web

[Web] OAuth

by 차가운개발 2024. 11. 28.

 

OAuth는 애플리케이션이 사용자 자격 증명을 노출하지 않고도 다른 애플리케이션이나 서비스의 리소스에 접근할 수 있는 권한을 부혀할 수 있는 권한 부여 프레임워크이다. 이런 매커니즘은 구글, 페이스북, 트위터 등 대형 플랫폼에서 사용하고 있으며 타사 애플리케이션 및 웹 사이트의 계정에 대한 정보를 공유할 수 있도록 허용해준다.

 

 ㅇ 구성 요소

  • 리소스 소유자
    리소스의 소유자이며 권한을 위임할 수 있는 사용자
    ex : 소셜 로그인을 사용하려는 사용자 (나)

  • 클라이언트
    리소스 소유자의 데이터를 사용하려는 애플리케이션
    클라이언트는 리소스 소유자의 허락을 받아 리소스 서버에 접근한다
    반드시 인증을 통해 권한을 받아야한다
    ex : 소셜 로그인을 통해 가입하려는 웹사이트

  • 리소스 서버
    보호된 리소스를 저장하고 관리하는 서버
    클라이언트는 리소스 서버에 접근하려면 권한이 있어야 한다
    ex : 구글이 관리하는 사용자 데이터 등이 저장된 서버

  • 권한 서버
    사용자를 인증하고 클라이언트가 사용할 액세스 토큰을 발급하는 역할을 수행
    권한 서버와 리소스 서버는 동일하거나 분리될 수 있다
    ex : 구글이 관리하고 있는 사용자 인증, 토큰 발급 서

  • 액세스 토큰
    클라이언트가 리소스 서버에 접근할 수 있도록 권한 서버에서 발급하는 인증 토큰
    보통 제한된 시간 동안 유효하며, 사용 범위도 명시된다
    형식은 JWT 또는 일반 문자열

  • 리프레시 토큰
    액세스 토큰이 만료되었을 때 새 엑세스 토큰을 발급받을 수 있는 토큰
    주로 장기적인 세션 유지가 필요할 때 사용

 

ㅇ 동작 원리

  1. 클라이언트 권한 요청
    사용자가 클라이언트를 통해 권한을 요청하면 클라이언트는 권한 서버로 권한 요청을 보낸다
    사용자는 이 과정에서 권한 부여 동의를 제공

  2. 사용자 인증 및 승인
    권한 서버는 사용자를 인증(로그인)하고 사용자가 요청한 권한 범위를 검토한 후 승인한다

  3. 액세스 토큰 발급
    권한 서버는 클라이언트에게 엑세스 토큰을 발급한다 이 토큰은 클라이언트가 리소스 서버에 접근할 때 사용한다

  4. 리소스 요청
    클라이언트는 액세스 토큰을 포함해 리소스 서버에 요청을 보낸다

  5. 리소스 제공
    리소스 서버는 액세스 토큰의 유효성을 확인한 뒤 요청된 리소스를 반환한다

 

ㅇ 권한 부여 방식

  • 인가 코드 방식
  • 암시적 방식
  • 자격 증명 방식
  • 클라이언트 자격 증명 방식
  • 디바이스 코드 방식

 

'Web' 카테고리의 다른 글

[Web] Authentication & Authorization  (0) 2024.11.28
[Web] JWT(Json Web Tokken)  (0) 2024.11.28
[Web] Web과 WAS의 차이  (0) 2024.11.27
[Web] REST API  (1) 2024.11.27
[Web] HTTP Status Code  (0) 2024.11.27