사용자가 계정정보를 제공하지 않고 도 다른 애플리케이션, 웹사이트가 사용자의 자원을 안전하게 접근할 수 있도록 허용하는 표준 인증 프로토콜이다.
사전적의미는 이렇고, OAuth에 대해 이해하려면 먼저 Auth의 과정을 간략히 이해할 필요가 있다.
대부분의 웹사이트는 로그인을 통해 인증된 사용자와 비인증 사용자를 구분짓는다.
이때 사용자는 아이디와 비밀번호를 입력하고 확인버튼을 누른 뒤, 인증(로그인)받는다.
위 과정은 어떻게 이루어질까? 사이트마다 구현된 방식이 다르겠지만, 보통 아래와 같은 과정을 거친다.
2. Server는 Client에게서 받은 데이터로 검증한다.
Auth란 결국 서버와 클라이언트간 약속된 규약으로 이루어진다.
OAuth는 인증의 주체가 해당 서비스가 아닌 다른 서비스(Google, Naver, Github...)다.
출처 : https://cloud.google.com/apigee/docs/api-platform/security/oauth/oauth-introduction?hl=ko
(위 이미지는 구글의 OAuth를 나타낸 것.)
redirectUri
로 보내준다.그림만 보면 간단하다.
그러나 위 그림에선 클라이언트/서버가 구분되어있지 않다.
클라이언트와 서버를 구분지어 OAuth를 진행해보자.
OAuth에서 클라이언트와 서버의 역할은 어떻게 나뉠까?
간단하게 생각하면 인증/인가 관련된 로직은 전부 서버에 넣고 클라이언트는 단순히 API요청만 할 수도 있다.
그러나 마찬가지로 해당 로직을 모두 클라이언트에서 진행할 수도 있다.
출처 : https://developers.google.com/identity/protocols/oauth2?hl=ko
서비스와 상황에 따라 적절한 전략을 사용하는 게 중요해보인다.
잘 쓰여진 글한 편 보면 이해가 좀 된다.