OAuth는 인증을 위한 표준 프로토콜의 한 종류다.
보안 된 리소스에 액세스하기 위한 권한 제공 프로세스를 단순화하는 프로토콜이다.
위키백과
OAuth("Open Authorization")는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.
Resource Owner: 액세스 중인 리소스의 유저입니다. 김코딩의 구글 계정을 이용하여 App에 로그인할 경우, 이때 리소스 오너 김코딩이 됩니다.
Client: 리소스 오너를 대신하여 보호된 리소스에 액세스하는 애플리케이션입니다. 클라이언트는 서버, 데스크탑, 모바일 또는 기타 장치에서 호스팅할 수 있습니다.김코딩이 A라는 애플리케이션을 Google의 소셜로그인을 이용해 사용한다면 A가 클라이언트가 됩니다.
Resource Server: 클라이언트의 요청을 수락하고 응답할 수 있는 서버입니다. 클라이언트(e.g. A 애플리케이션)가 Google Photo에서 김코딩의 사진을 가져오는 경우, Google Photo가 리소스 서버가 됩니다.
Authorization Server: Resource Server가 액세스 토큰을 발급받는 인증 서버입니다. 리소스 오너를 성공적으로 인증한 후 클라이언트에게 액세스 토큰을 발급하는 서버를 말합니다.
Authorization Grant: 클라이언트가 액세스 토큰을 얻는 방법을 의미합니다. 다음과 같은 방법들이 주로 사용됩니다.
- Authorization Code Grant Type
- Client Credentials Grant Type
- Implicit Grant Type
- Resource Owner Credentials Grant Type
Authorization Code: Authorization Grant의 한 타입으로 액세스 토큰을 발급받기 위한 Code를 의미합니다. Client ID로 이 Code를 받아온 후, Client Secret과 Code를 이용해 액세스 토큰을 받아올 수 있습니다.
Access Token: 보호된 리소스에 액세스하는 데 사용되는 인증 토큰입니다. Authorization Code와 Client Secret을 이용해 받아온 이 Access Token으로 이제 리소스 서버에 접근할 수 있습니다.
Scope: Scope는 토큰의 권한을 정의합니다. 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위입니다. 이와 같은 설정을 통해 특정 유저의 사진첩에는 접근할 수 있지만, 연락처 등 다른 리소스에는 접근할 수 없도록 접근 권한을 지정할 수도 있습니다.
<출처 : 위키백과 OAuth>
가장 많이 쓰이고 기본이 되는 방식임. 리프레시 토큰 사용이 가능하다.
일반적으로 사용자의 직접적인 상호 작용이 없이 백그라운드에서 실행하는 경우에 사용한다.
이 경우 관리자가 앱 자체에 직접 사용 권한을 부여한다. 리프레시 토큰은 사용할 수 없다.
별도의 권한 부여 승인 코드 없이 바로 액세스 토큰을 발급하는 방식이다.
리프레시 토큰 사용이 불가능하며, 인증과정을 생략한다.
로그인시 필요한 정보로 (userId 혹은 username / password)로 액세스 토큰을 발급 받는 방식이다. 자신의 서비스에서 제공하는 앱의 경우에만 사용한다. 리프레시 토큰도 사용 가능하다.
이를테면 네이버 아이디로 웹툰, 블로그 등에 로그인 하는 경우를 생각할 수 있다.
즉, 서버, 리소스서버, 클라이언트가 모두 같은 시스템에 속해 있을 경우 사용이 가능하다.