14주차 OAuth

lim1313·2021년 10월 22일
0

부트캠프 TIL

목록 보기
45/49

🌈 OAuth

OAuth 2.0은 페이스북이나 구글의 아이디로 제 3의 서비스에 로그인해서 등록되어 있는 정보(친구 목록)나 기능(담벼락 글쓰기)에 접근할 수 있는 권한을 제어하기 위한 표준 프로토콜이다.

검증되지 않은 App에서 OAuth를 사용하여 로그인한다면, 직접 유저의 민감한 정보가 App에 노출될 일이 없고 인증 권한에 대한 허가를 미리 유저에게 구해야 하기 때문에 더 안전하게 사용할 수 있다.

⚡ OAUTH 프로세스

⚡ 용어 정리

  • Resource Owner : 액세스 중인 리소스의 유저입니다. 김코딩의 구글 계정을 이용하여 App에 로그인할 경우, 이때 Resource owner은 김코딩이 됩니다.
  • Client : Resource owner를 대신하여 보호된 리소스에 액세스하는 응용 프로그램입니다. 클라이언트는 서버, 데스크탑, 모바일 또는 기타 장치에서 호스팅할 수 있습니다.
  • Resource server : client의 요청을 수락하고 응답할 수 있는 서버입니다.
  • Authorization server : Resource server가 액세스 토큰을 발급받는 서버입니다. 즉 클라이언트 및 리소스 소유자를 성공적으로 인증한 후 액세스 토큰을 발급하는 서버를 말합니다.
  • Authorization grant : 클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명의 유형입니다.
  • Authorization code : access token을 발급받기 전에 필요한 code 입니다. client ID로 이 code를 받아온 후, client secret과 code를 이용해 Access token 을 받아옵니다.
  • Access token : 보호된 리소스에 액세스하는 데 사용되는 credentials입니다. Authorization code와 client secret을 이용해 받아온 이 Access token으로 이제 resource server에 접근을 할 수 있습니다.
  • Scope : scope는 토큰의 권한을 정의합니다. 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위입니다.
  • Authorization callback URL : OAuth 메커니즘이 인증 과정이 끝난 후 리디렉션을 통해 다시 내 앱으로 이동하는 원리이므로, 내 앱으로 돌아가기 위한 Authorization callback URL이 필요

🌈 Grant type 종류

client가 액세스 토큰을 얻는 방법

⚡ Authorization Code Grant type

Grant type에서 가장 일반적으로 사용되는 type
액세스 토큰을 받아오기 위해서 먼저 Authorization code를 받아 액세스 토큰과 교환하는 방법
Authorization code 절차를 거치는 이유는 보안성 강화에 목적이 있다. client에서 client-secret을 공유하고 액세스 토큰을 가지고 오는 것은 탈취될 위함이 있기 때문에, client에서 authorization code만 받아오고 server에서 access token요청을 진행한다.

⚡ Refresh Token Grant Type

일정 기간 유효 시간이 지나서 만료된 액세스 토큰을 편리하게 다시 받아오기 위해 사용하는 방법
Access Token보다 Refresh token의 유효 시간이 대체로 조금 더 길게 설정하기 때문에 가능한 방법이다. server 마다 refresh token에 대한 정책이 다르기 때문에 refresh token을 사용하기 위해서는 사용하고자 하는 server의 정책을 살펴볼 필요가 있다.

⚡ Authentication vs Authorization

  • Authentication 인증
    : 네이버 로그인

  • Authorization 인가
    : 로그인한 그 사람이 관리자(Admin)인지 일반 사용자인지, 게스트인지 구분하는 것

⚡ OAUTH 2.0 취약점, 고려사항

https://meetup.toast.com/posts/105


oAuth 과제 정리

  • OAUTH 인증 흐름도
  • accessToken 저장 위치
  • 다른 url로 화면 이동
profile
start coding

0개의 댓글