OAuth

moontag·2022년 7월 15일
0

네트워크

목록 보기
17/18

OAuth

소셜로그인 인증방식

  • OAuth 2.0 : 인증을 위한 표준 프로토콜의 한 종류
  • 사용자 정보를 가진 웹서비스(GitHub, Google 등)에서 사용자 인증을 대신하고,
    접근권한 토큰 발급한 후,
    이를 이용해 내 서버에서 인증 가능해짐

인증(Authentication)을 다른 서비스에 맡길 뿐,
접근 권한 관리(Authorization)은 서버 몫.




필요성

  • 유저입장에서는 소셜로그인을 통해 편리성이 높아짐
  • 보안상에서는 검증되지않은 앱에서 OAuth로 로그인 시,
    유저의 민감한 정보가 앱에 노출될 일이 없고
    인증권한에 대한 허가를 사전에 유저에게 구하므로 안전하게 사용 가능.



용어 정리

Resource Owner

액세스 중인 리소스의 유저.
김코딩의 구글계정 이용하여 앱에 로그인하면 리소스 오너 김코딩이 된다

Client

리소스오너를 대신하여 보호된 리소스에 엑세스하는
클라이언트는 서버, 데스크탑, 모바일이나 기타장치에서 호스팅할 수 있음.
김코딩이 a앱을 구글 소셜로그인으로 사용한다면 a가 클라이언트가 된다

Resouce Server

유저의 리소스를 가지고 있어서 클라이언트의 요청을 수락, 응답하는 서버
클라이언트(ex. a앱)가 구글 Photo에서 김코딩 사진 가져올 때 구글 Photo가 리소스 서버가 된다

Authorization Server

Resource Server가 액세스토큰을 발급받는 인증 서버
리소스 오너를 성공적으로 인증한 후 클라이언트에게 액세스 토큰을 발급하는 서버

Authorization Grant

클라이언트가 액세스 토큰을 얻는 때 사용하는 자격증명 방법

  • Authorization Code Grant Type - 대표적
  • Refresh Token Grant Type
  • Client Credentials Grant Type
  • Implicit Grant Type
  • Resurce Owner Credentials Grant Type

Authorization Code

Authorization Grant의 한 타입으로 Access Token을 발급받기 위한 코드

  • Client ID로 이 코드받은 후, Client Secret과 코드를 이용해 Access Token 받아올 수 있음

Access Token

보호된 리소스에 액세스하는 데 사용되는 인증토큰 credentials

  • Authorization Code와 Client Secret을 이용해 받아온 이 토큰으로 리소스 서버에 접근 가능
  • 클라이언트에 발급해주며, 문자열 타입임

Scope

액세트 토큰으로 접근가능한 리소스 범위

  • 주어진 액세스 토큰을 사용해 엑세스할 수 있는 리소스의 범위
  • 이 설정을 통해 특정유저의 사진첩에 접근할 수 있지만, 연락처 등 다른 리소스에는 접근 불가능하도록 접근 권한을 지정할 수 있음

Resouce Owner : User 김나나
Client : App
Resouce Server : FaceBook
Authorization Server : FaceBook
Scope: image



Grant type?

Client가 엑세스 토큰을 얻는 방법

  • Authorization Code Grant Type - 대표적
  • Refresh Token Grant Type - 대표적
  • Client Credentials Grant Type
  • Implicit Grant Type
  • Resurce Owner Credentials Grant Type



Authorization Code Grant Type

액세스 토큰받기 위해 먼저 Authorization Code 받아 액세스 토큰과 교환하는 방법

  • 보안성 강화하기 위한 목적으로 사용
    Client에서 client-secret 공유하고 액세스 토큰을 가지고 오는 것은 탈취될 위험있으므로
    Client에서는 Authorization code만 받아 오고 Server 에서 액세스 토큰 요청을 진행한다




Refresh Token Grant Type

유효기간이 만료된 액세스 토큰을 Refresh Token을 통해 새로운 액세스 토큰을 받아오기 위해 사용

  • 액세스 토큰보다 유효시간이 대체로 더 길게 설정하게 때문에 가능하다
  • 서버마다 Refresh Token 정책이 다르므로 사용하고자 하는 서버 정책을 살펴봐야 한다



profile
터벅터벅 나의 개발 일상

0개의 댓글