Oauth2.0
의 기초에 대해 알아보고자 한다.
많은 자료가 있지만, 정확한 이해를 위해 oauth2.0의 개념
부터 구현
까지 직접하며 글을 남기고자 한다.
자세한 개념 설명은 다음과 같은 더 좋은 글들을 찾아보기 바란다.
생활코딩 oauth2.0
본격적으로 oauth2.0를 살펴보기 전에 다음과 같은 용어
의 의미를 짚고 가자.
인증
(Authentication)신원을 확인
하는 행위이다.인가
(Authorization)승인
이라고도 불리는데, 권한을 부여
하는 행위이다.권한이 각 사용자에게 부여되는 경우에는 반드시
권한 소유자에 대한 인증절차를 거치게 된다.
웹에서 이러한 가장 보편적인 방법은 ID/PW
방식으로 로그인하는 것이다.
사용자가 입력한 정보를 서버에 전송하여 인증이 성공할 경우, 쿠키
에 세션
값을 저장함으로써 권한이 부여된다.
이런 방식은 한 번의 로그인으로 세션이 종료되기 전까지 제한된 기능을 수행할 수 있어, 간편
하고 효율적
인 방식으로 널리 사용된다.
하지만 이러한 쿠키 기반 권한 부여는 다음과 같은 단점
을 지닌다.
낭비
가 발생한다.않다
.어렵다
.이러한 단점을 해결하기 위해 IETF는 Oauth
라는 프레임워크를 만들게 된다.
oauth1과 oauth2는 완전히
다른
프로토콜이며, 호환되지 않는다.
Oauth2.0의 시나리오에는 다음과 같은 4가지 역할이 존재한다.
Resource Owner
사용자
로서 자신의 리소스에 대한 접근 권한을 가지고 있는 주체이다.Client
접근하는 서비스
로서 사용자의 데이터에 대한 요청을 보내는 주체이다.Resource Server
데이터를 보유
한 기관으로서 유효한 권한을 부여받은 client가 요청할 경우 제공한다.Authorization Server
권한을 제공
하는 서버이다. client의 요청에 따라 사용자에게 정보제공 동의
를 받은 후, 권한을 부여한다.
규모가 작을 경우, Resource Server와 Authorization Server를 하나의 서버로 구현하기도 한다.
Oauth2.0에는 다음과 같은 세 가지의 기본 정보가 존재한다.
등록정보
등록
해야한다.
새로운 서비스가 출시될 때마다 정보를 갱신하여 제출한다.Redirect URI
정보제공 동의
를 하게되면 사용자를 등록된 Redirect URI
로 이동시킨다.
만약 등록되지 않은 Redirect URI를 담은 요청이 들어오면 무효
처리한다.Client ID
& Client Secret
Client ID
와 Client Secret
을 발급받는다.
Client ID는 노출되어도 상관 없지만, Client Secret는 절대
노출되어서는 안된다.Oauth2.0에 대하여 간략하게 알아보았다. 다음 포스팅에서는 oauth2.0의 4가지 인증 방식
에 대하여 알아볼 예정이다.