OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
Resource Owner : 리소스 소유자이다 본인의 정보에 접근할 수 있는 자격을 승인하는 주체이다.
Client : Resource Owner의 리소스를 사용하고자 접근 요청을 하는 어플리케이션이다.
Resource Server : Resource Owner의 정보가 저장되어있는 서버.
Authorization Server : 권한 서버. Access Token을 발급하여 권한을 부여하는 역할 수행
권한 부여 승인을 위해 자체 생성한 Authorization Code를 전달하는 방식으로 많이 쓰이고 기본이 되는 방식이다.
권한 부여 승인 요청 시 response_type을 code로 지정하여 요청한다. 이후 클라이언트는 권한 서버에서 제공하는 로그인 페이지를 브라우저를 띄워 출력한다. 이 페이지를 통해 사용자가 로그인을 하면 권한 서버는 권한 부여 승인 코드 요청 시 전달받은 redirect_url로 Authorization Code를 전달한다. 이 Code는 권한 서버에서 제공하는 API를 통해 Access Token으로 교환된다.
자격증명을 안전하게 저장하기 힘든 클라이언트에게 최적화된 방식이다.
여기서는 승인 코드 없이 바로 Access Token이 발급된다. 만료기간을 짧게 설정하여 전달된다.
Access Token이 URL로 전달된다는 단점이 있다.
권한 부여 승인 요청 시 response_type을 token으로 설정하여 요청한다. 이후 클라이언트는 권한 서버에서 제공하는 로그인 페이지를 브라우저를 띄워 출력하게 되며 로그인이 완료되면 권한 서버는 Authorization Code가 아닌 Access Token를 redirect_url로 바로 전달한다.
간단하게 userName, password로 Access Token을 받는 방식이다.
요점은 이 방식은 권한 서버, 리소스 서버, 클라이언트가 모두 같은 시스템에 속해 있을 때 사용되어야 하는 방식이라는 점이다.