오늘은 OAuth에 대해 간단하게 알아봅니다.
OAuth("Open Authorization")는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 이 매커니즘은 여러 기업들에 의해 사용되는데, 이를테면 아마존, 구글, 페이스북, 마이크로소프트, 트위터가 있으며 사용자들이 타사 애플리케이션이나 웹사이트의 계정에 관한 정보를 공유할 수 있게 허용한다.
출처: wiki 백과
OAuth가 사용되기 전에는 인증방식의 표준이 없었기 때문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조일 가능성이 매우 많다.
기본 인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인하였다. 예를 들면 구글의AuthSub,AOL의OpenAuth, 야후의BBAuth, 아마존의 웹서비스API등이 있다.
OAuth는 이렇게 제각각인 인증방식을 표준화한 인증방식이다.OAuth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없다. 따라서 여러 애플리케이션을 통합하여 사용하는 것이 가능하게 된다.
출처: wiki 백과
일단 위키 문서의 내용을 차근차근 읽어보겠습니다.
OAuth 방식 사용 전에는 인증 방식의 표준이 없었다.Application 개발 회사의 방법대로 사용자를 확인한다.OAuth는 제각각인 사용자 확인(인증)방식을 표준화한 인증 방식이다.OAuth를 사용하면 해당 인증을 공유하는 App들 끼리는 별도의 인증을 하지 않는다.예전에
어떠한 서비스에 대하여 사용자로 인증을 하는 경우에는어떠한 서비스에서 가입했던아이디와비밀번호를 입력해서 인증을 하고 로그인을 했었습니다.
이러한 방식을 기본 방식이라고 부르는 것 같습니다.
근데, 이 방식이 취약한 구조라고 위키에서는 제공하고 있는데 그래서 왜? 무엇이? 취약한지 궁금해서 한번 알아봤는데 이에 대해 간단히 또 알아봅시다.
대부분의 포스팅이나 칼럼에서는 기본인증의 취약점은
가짜 서버 위장에 취약하다라고 제시가 되어있습니다.
가짜 서버에 연결이 되어 있지만사용자는검증된 서버에 연결되어 있다고 믿고개인정보(아이디/비밀번호)를 노출 할 위험이 있기 때문입니다.
그리고 OAuth 인증방식은 요새 흔히 앱에 로그인할때

위와 같은 로그인 방식을 볼텐데 다른 앱의 인증 정보를 OAuth 프로토콜로 표준화한 방식이라고 생각이 듭니다.
OAuth를 사용하는 이유는 다른 서비스의 회원 정보를 안전하게 사용하기 위해서이다.
간단하게 인증방식에 대해 알아봅니다.
용어를 먼저 정리할 필요가 있어서 용어에 대해 먼저 알아봅니다!
Open API를 이용해서 개발된 OAuth를 사용해서 서비스 제공자에게 접근하는 웹사이트 또는 어플리케이션OAuth를 통해 접근을 지원하는 웹 어플리케이션(Open API를 제공하는 서비스)방식에 대한 그림을 한번 알아봅시다.

순서대로 한번 알아보게 되면 다음과 같습니다.
Consumer가 Service Provider에게 Request Token을 요청합니다.Service Provider가 Consumer에게 Request Token을 발급해 줍니다.Consumer가 User를 Service Provider 와 연결합니다.Service Provider가 User를 Consumer에게 연결합니다.Consumer가 된 User가 접근 토큰을 요청하게 됩니다.Service Provider가 Access Token을 Consumer에게 발급 해 줍니다.Access Token을 이용해서 Consumer에서 사용자 정보에 접근하게 됩니다.아마 위의 순서에서 3, 4번 항목이 좀 이해가 잘 안될수도 있는데 실상은 아주 간단하고 또 익숙한 얘기입니다.
예를들어, velog에 로그인을 한다고 가정 해 봅시다!!

그러면 위의 사진과 같이 소셜로그인 항목이 나오게 됩니다.
간단하게 구글 계정으로 로그인을 한다고 가정을 해보면

위와 같이 구글 로그인 화면으로 변경이 됩니다.
이것을 정리해 본다면,
일단, 나는 User에 해당합니다.
그리고 현재 내가 로그인하고자 하는 Application은 Velog이고, Velog는 Consumer의 역할이 됩니다.
또한, OAuth에 필요한 Token같은 것들을 발행해주는 Service Provider는 여기서는 Google이 되는 것이죠.
그리고 나서 3번 항목을 다시 보면
Consumer가User를Service Provider와 연결합니다.
즉, Consumer인 Velog가 로그인 하라고 나(User)를 Google(Service Provider)와 연결을 시켜 준 게 되는 것 입니다.
그리고 로그인 인증이 끝나면 Service Provider는 원래 User가 로그인을 요청했던 Consumer에 해당하는 Velog.io로 연결 시키기 때문에 4번 항목이 끝나게 되는 것 입니다!