OAuth

·2023년 5월 12일
0

개발 지식

목록 보기
74/96
post-thumbnail

OAuth

OAuth는 외부 소셜 계정의 정보 공유를 통해 간편한 회원가입 및 로그인을 제공하는 개방형 표준 인증 프로토콜이다. OAuth는 사용자의 비밀번호를 제3자 애플리케이션과 공유하지 않아도 되기 때문에 보안성이 뛰어나며, API를 사용하는 애플리케이션에서 권한 부여를 통해 사용자 데이터에 접근할 수 있다.

OAuth 참여자

OAuth 동작에 관여하는 참여자는 크게 세 가지로 구분한다.

  • Resource Server : Client가 제어하고자 하는 자원을 보유한 서버를 의미한다. 자신의 개인정보를 현재 가지고 있는 소셜 계정 회사의 서버들이 이에 속한다.
  • Resource Owner : 자원을 소유한 사람, 즉 실제 로그인 하려는 사용자를 의미한다.
  • Client : Resource Server를 통해 정보를 가져오는 웹사이트 혹은 어플리케이션을 의미한다.

흐름

Client 등록한다.

Resource Server를 이용하기 위해서는 먼저 서비스를 등록해야한다. 서비스를 등록하면 일반적으로 3가지 정보를 부여받는다.

  • Client ID : 등록한 서비스를 식별하기 위한 정보
  • Client Secret : Client ID에 대한 비밀키 (노출되면 안됨)
  • redirect URL

로그인 페이지가 나온다.

OAuth를 시도하는 사람이 실제 Resource Owner인지를 확인하기 위해, 로그인 페이지를 통해 ID와 PW 입력을 진행한다.

Authorization Code가 발급된다.

인증이 성공한 경우, Authorization Server는 제공된 Redirect URI로 사용자를 리다이렉션 시킨다. 이때, Redirect URI에 Authorization Code를 포함시켜 전송시킨다. 이 Authorization Code가 향후 Access Token을 획득하기 위한 임시 코드가 된다.

Access Token을 발급 받는다.

Client는 Access Token을 저장하고, 이후 Resource Server에서 Resource Owner의 정보에 접근하기 위해, Access Token을 사용한다.

OAuth 2.0

OAuth 2.0은 2012년에 나온 두 번째 버전으로, 이전 버전인 OAuth 1.0a와 달리 간단하고 유연한 토큰 기반 인증 프로토콜이다. OAuth 2.0은 스코프라는 개념을 통해 유저 리소스에 대한 Client의 접근 범위를 제한할 수 있다. 예를 들어 서비스에서 사용자의 구글 연락처를 받아오고 싶다면, 스코프에 연락처 스코프 문자열을 포함하여 OAuth 2.0 제공자에게 전달하면 된다.

참고
OAuth 2.0 개념과 동작원리
OAuth 개념 및 동작 방식 이해하기

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글