다나와의 회원가입 폼을 예로 가져왔다.
OAuth란 인터넷 사용자들이 제 3자 어플리케이션에게 인증 및 권한 부여를 할 수 있도록 해주는 개방형 인증 프로토콜을 말한다.
OAuth는 사용자의 인증 정보를 노출하지 않으면서도 안전하게 인증 및 권한 부여를 수행할 수 있도록 해준다.
OAuth를 이용하면 수 많은 사이트의 계정을 기억할 필요가 없고 몇개의 계정에 사용자가 집중함으로써 보안에 유리해진다.
OAuth의 단점으로는 간단하게 계정을 만들었을때의 유령 데이터가 많아질 수 있다는 것.
일반적으로 관리되는 데이터인 id, password, email, gender, picture 등을 전달해준다.
OAuth를 요청하면 B 도메인의 로그인폼을 get요청해서 응답받는다.
이때 쿼리스트링안에는 요청을 한 A 도메인의 정보를 전달해주는데 B 는 A 가 신뢰할 수 있는 도메인인지 판단하고 로그인폼을 리턴해준다( 신뢰 리스트에 존재해야함 )
로그인을 하면 post요청을 하게 되고 B 는 302 상태코드를 응답해서 로그인 요청을 한 클라이언트가 리다이렉션을 하도록 유도한다.
( 302 상태코드에는 location.href 정보가 있음 )
이때 post요청을 날리기 앞서 B 도메인의 OAuth를 이용하려면 A의 콜백주소를 등록해야 한다.
로그인 성공시 B 는 B 의 토큰을 생성해서 A 의 콜백주소로 리턴한다.
A 는 B 의 토큰을 확인하고 리다이렉션을 허용하고 로그인된 것으로 판단한다.
이때 A 는 B 토큰을 이용하여 B 의 사용자 계정에 접근할 수 있는 권한을 부여 받아 정보를 가져오거나 서비스를 이용하게 된다.
가장 먼저 해야할일은 OAuth 서비스를 이용할 도메인에 신뢰할수 있는 도메인으로 등록 및 콜백주소를 등록해야 한다.
예를 들어 카카오의 OAuth를 이용한다고 해보자
개발자 센터에 가보면 카카오 로그인 OAuth를 사용하는 방법을 알려준다.
https://developers.kakao.com/ 가서 어플리케이션 등록을 하고 나서
플랫폼 설정후 토큰을 전달해줄 콜백 주소를 등록한다.
이제 공식 문서를 보고 연습해보자
토큰을 발급 받고 나서 사용자 정보에 접근하기 위해서는 먼저 로그인시 동의를 받는 등의 설정이 필요하다.
일단 동의를 받아서 email만 가져오게 만들었다.