프로젝트에서 구글 로그인 구현을 담당하게 되었습니다. 구현도 중요하지만 언제나 사용할 수 있는 지식으로 가공하기 위해서 구현에 가장 중요한 개념 중 하나인 OAuth 2.0에 대해 다뤄보도록 하겠습니다.
무신사 (온라인 패션 커머셜 기업) 의 로그인 페이지 일부를 캡쳐하였습니다.
우리는 종종 웹 사이트에서 위와 같은 카카오 로그인 처럼 외부 소셜 계정을 통한 회원 가입 및 로그인 기능을 쉽게 찾아볼 수 있는데요, 위 기능을 이용하면 번거롭게 아이디, 비밀번호를 설정하지 않아도 될 뿐더러 연결하는 소셜 계정에서 일부 정보를 가져와 간편하게 서비스를 이용할 수 있다는 장점이 있습니다.
이 때 이용하는 프로토콜이 바로 OAuth 인데요, OAuth는 Open Auth 즉, 인증 처리를 대신 해주는 프로토콜이라고 이해하면 되겠습니다. 위키백과는 OAuth를 다음과 같이 정의하고 있습니다.
OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다.
예를 들어, 위의 무신사에서 카카오 로그인을 통해 회원 가입 및 로그인을 진행하였다면, 무신사 측에서는 카카오의 특정 자원을 접근 할 수 있는 권한을 부여받는 것이죠.
OAuth는 많은 이점이 존재합니다. 대표적으로 보안 상의 이점이 있는데 만약 우리가 OAuth가 없는 어떠한 평행 세계에 있다고 가정해 봅시다. 우리는 수 많은 웹 사이트에 자신의 정보를 가지고 회원 가입을 진행해야 할 것입니다. 이렇게 되면 자신이 이용하는 수 많은 웹 사이트는 내 자신의 개인 정보를 가지고 있게 되죠. 이렇게 많은 수의 웹 페이지에 내 정보가 담겨 있다면 그 만큼 개인 정보 노출의 위험이 커지게 됩니다. 대게 많은 수의 사용자들은 동일한 아이디와 비밀번호를 가지고 웹 사이트에 가입하기 때문입니다.
따라서 많은 수의 웹 사이트에서 내 정보를 관리하는 것 보다 특정한 곳에서 내 정보를 관리하는 것이 개인 정보 보안 상의 이점이 있습니다. 여기서 말하는 특정한 곳은 네이버, 카카오, 구글 등의 대기업 포털 사이트가 있습니다.
(😅 물론 단지 회원 가입이 귀찮아서 OAuth 기능을 사용할 수 있지만, “그것이 OAuth의 전부” 라고 묻는다면 단호하게 “그렇지 않다” 라고 답할 수 있습니다.)
OAuth의 작동 방식은 다음과 같습니다.
이러한 방식으로 OAuth는 클라이언트 애플리케이션이 사용자의 비밀번호를 알 필요 없이 인증 및 인가를 처리할 수 있게 해줍니다. 또한, 사용자는 자신의 로그인 정보를 안전한 인증 서버와 공유하고, 클라이언트 애플리케이션은 사용자의 리소스에 대한 권한을 부여 받을 수 있습니다.
OAuth는 각 서비스 제공자마다 유저 정보에 대한 표준이 없기 때문에, 유저 데이터를 전달하는 방식이 각기 다르다는 점에서 어려움이 있습니다. 이로 인해 클라이언트 애플리케이션은 각 응답에 대해 개별적으로 대응해야 하는 불편함이 존재합니다.
Kakao
Naver