[CS] OAtuh 2.0 Day-59

cptkuk91·2022년 2월 6일
0

CS

목록 보기
98/139

OAuth 2.0

인증을 위한 표준 프로토콜의 한 종류로, 보안 된 리소스에 엑세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜 중 한 가지 방법입니다.

흔히 볼 수 있는 소셜 로그인 인증 방식은 OAuth 2.0 기술을 바탕으로 구현됩니다.

전통적으로 직접 작성한 서버에서 인증 처리해주는 것과 달리, OAuth는 인증을 중개해주는 메커니즘입니다. (보안된 리소스에 엑세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜입니다.)

사용자 정보를 가지고 있는 웹 서비스에서 사용자의 인증을 대신해주고, 접근 권한에 대한 토큰을 발급받은 후, 이를 이용해 내 서버에서 인증이 가능해집니다.


OAuth 문제

모든 것을 해결해 주는 솔루션이 아닙니다. 사용자 정보가 내 서버에 저장되는 것은 변함이 없습니다. 인증을 다른 서비스에 맡길 뿐, 접근 권한 관리는 내 서버의 몫입니다.


OAuth를 사용하는 이유

유저 입장에서 생각해보면 서비스를 이용하기 위해 회원가입 절차가 필요한 경우가 대부분입니다. ID, Password를 모두 기억하는 건 귀찮은 일입니다. OAuth를 활용한다면 소셜 로그인을 통해서 로그인 할 수 있어 매우 편리합니다.

직접 유저의 민감한 정보를 App에 노출할 일이 없고, 인증 권한에 대한 허가를 미이 유저에게 구해야 하기 때문에 더 안전하게 사용할 수 있습니다.


OAuth 용어

  • Resource Owner: 엑세스 중인 리소스 유저입니다.
    ex) 구글 계정을 이용해 App에 로그인할 경우, Resource Owner는 사용자입니다.

  • Client: 엑세스하는 응용프로그램입니다. 클라이언트는 서버, 데스크탑, 모바일 또는 기타 장치에서 호스팅 할 수 있습니다.

  • Resource Server: Client의 요청을 수락하고 응답할 수 있는 서버입니다.

  • Authorization Server: Resource Server가 엑세스 토큰을 발급받는 서버입니다.

  • Authorization grant: 클라이언트가 엑세스 토큰을 얻을 때 사용하는 자격 증명의 유형입니다.

  • Authorization code: 엑세스 토큰을 발급받기 전에 필요한 Code입니다.

  • Access Token: 보호된 리소스에 엑세스하는 데 사용되는 Credentials입니다. Authorization code와 Client secret을 이용해 받아온 Access Token을 이용해 Resource Server에 접근할 수 있습니다.

  • Scope: 토큰의 권한을 정의합니다. 주어진 엑세스 토큰을 사용해 엑세스 할 수 있는 리소스의 범위입니다.


소셜 로그인 Logic Flow

  1. Client가 Authorization Code를 OAuth에 요청한다.
  2. OAuth가 Redirect uri를 통해 Authorization Code를 부여한다.
  3. Client가 Authorization Code를 Server에 전달한다.
  4. Server가 Authorization Code를 보내 Access Token을 요청한다.
  5. OAuth가 Access Token을 Server에 부여한다.
  6. Server가 Client에 Access Token을 전달한다.

OAuth 2.0에서 Grant Type이란?

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

  • Authorization Code Grant Type
  • Refresh Token Grant Type
    이 외 다양한 Grant Type이 존재하지만, 위 2개가 권장..

Authorization Code Grant Type

일반적으로 많이 사용한다.
엑세스 토큰을 받아오기 위해 Authorization Code를 받아 엑세스 토큰과 교환하는 방법

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글