사용자가 서버에서 정보를 가져와 사용할 수 있는 가장 쉬운방법은 아래와 같음
하지만 이 방법은 보안에 매우 취약하여 이를 보완하기 위해 등장한 것이 OAuth
다양한 플랫폼(구글, 페북 등) 서버의 사용자데이터에 접근하기 위해 클라이언트가 서버로부터 사용자의 접근권한을 위임받을 수 있는 표준 프로토콜
Resource Owner : 사용자Resource Server : 구글, 페이스북, 트위터와 같이 Resource Owner의 Resource(자원)을 가지고 있는 서버Authorication Server : Resource Owner를 인증하고 Client에게 엑세스 토큰을 발급해주는 서버Client : Resource Server의 Resource(자원)를 이용하고자 하는 서비스위 용어들로 개념을 다시 정리하면
Resource Server에서 Resource Owner의 Resource에 접근하기 위해 Client가 Authorication Server로부터 Resource Owner의 접근권한을 위임받을 수 있는 표준 프로토콜
으로 정리할 수 있다
Client를 Resource Server에 등록Redirect URI를 등록함Client ID, Client SecretClient ID, Client Secret를 얻음Client ID, Client Secret은 Access Token을 얻는데 사용됨
Resource Owner가 Client에게 로그인요청Client는 Authorization Server에게 로그인 요청Authorization Server가 제공하는 Authorization URL에 response_type, client_id, redirect_uri, scope등의 매개변수를 쿼리 스트링으로 포함하여 보낸다.Authorization Server는 Resource Owner에게 Authorization URL 페이지 제공Client가 빌드한 로그인 페이지인 Authorization URL 페이지를 제공Resource Owner는 Authorization Server에게 ID/PW를 입력하여 인증요청Resource Owner는 Authorization Server로 부터 제공받은 로그인 페이지인 Authorization URL에 ID/PW를 입력하여 인증요청Authorization Server는 Resource Owner에게 Authorization Code를 전달Resource Owner는 Redirect URI를 통해 Client로 리디렉션됨Client가 Access Token을 획득하기 위해 사용하는 임시 코드이며 수명이 매우 짧음 (일반적으로 1~10분)Client ID, Client Secret, Authorization Code를 전달Authorization Server는 Client에게 Access Token을 발급Client는 DB에 발급받은 Resource Owner의 Access Token을 저장Client는 Resource Server에서 Resource Owner의 Resource에 접근하기 위해 Access Token을 사용Client가 Resource Owner에게 로그인 성공하였음을 알림Resource Owner가 Client에게 Resource Server의 Resource가 필요한 기능을 요청Client가 Resource Server에게 Access Token으로 API호출Resource Owner의 Access Token을 사용하여 Resource Server의 Resource에 접근Resource Server가 Client에게 Access Token검증 및 Resource제공Resource Server는 Access Token을 검증 후 Client에게 Resource를 제공Client가 Resource Owner에게 Resource제공