오늘은 Github Oauth 구현하는 것에 시간을 많이 사용했습니다.
Oauth를 구현할 때 서버기반의 토큰 기반 인증을 사용합니다. 먼저, 클라이언트에서 서버로 웹페이지를 요청하면 서버에서는 웹사이트를 제공합니다. 그리고 로그인 요청하면 서버에서 내부적으로 토큰을 생성해서 그것을 응답합니다. 클라이언트는 토큰을 웹 브라우저 로컬스토리지에 저장합니다. 그리고 토큰 정보가 필요한 정보를 요청할 때 토큰 정보를 가지고 서버에 요청합니다. 그러면 서버는 토큰이 유효한 토큰인지 검증하고 클라이언트에게 응답하게 됩니다.
이 때 토큰은 여러가지를 이용해서 만들 수 있는데 흔히 JWT를 많이 사용하는 것 같습니다. 저도 내일은 JWT 를 공부하려구요.
웹서버에서 클라이언트 id와 redirect uri가 담긴 깃헙 URL로 code
를 요청을합니다. 사용자가 권한 승인을 하면 code
를 웹서버로 보내고, 웹서버는 설정된 리다이렉트 페이지로 이동합니다. 그리고 동시에 그code
를 가지고 백엔드 서버에 정보를 요청합니다. 백엔드 서버에서는 code
를 가지고 깃헙 서버와 통신해서 AccessToken을 발급받고 JWT를 생성해서 웹서버에 응답합니다.
그래서 AccessToken은 발급받아서 뭘할까? 그러게..뭘할까요?