배경
- 서비스를 개발하다보면 “인증”을 어떻게 구현할지, 특히 Google, GitHub 등의 OAuth 구현에 대해서 막막할때가 많아요.
- 인증 제공자가 제공해주는 SDK가 있긴 하지만, 이걸 갖고 어떻게 만들어야 하는지, 실제로 어떻게 동작하는지를 이해하지 못하기 때문에 구현이 꼬이는 케이스를 자주 만나요.
- 로그인 구현을 초장에 잘못 끼우면 생산성에 계속 이슈가 생겨요.
- ex: localhost에서 로그인을 어떻게 연동하고 테스트하면 좋을까요?
- 짜치는거 말고 진짜 중요한 것에 집중해서 “제대로” 구현하는 방법을 이해해요.
인증/인가
인증과 인가는 헷갈릴때가 많아요. 다음과 같이 심플하게 기억해요.
- 인증: Authentication
- 현재 페이지에 접속한 유저가 누구인지를 파악하는 일이에요.
- HTTP 요청을 통해 → User ID를 찾아내요
- → 프론트엔드의 역할
- 인가: Authorization
- (1) 해당 유저가 (2) 어떤 리소스에 (3) 해당하는 액션을 수행할 권한이 있는지를 체크하는 일이에요.
- User, Resource, Action
- ex: Google Drive라면 (1) 토니는 (2) hello.pdf 파일을 (3) 수정할 권한이 있는가? → T/F
- → 백엔드의 역할
우리가 잘 알아야 할 건 “인증"
인증을 하기 위해서는 (a) “로그인” 과정과 로그인 결과로 얻은 (b) “토큰(세션)”을 어떻게 유지하는지 두가지 정도의 스텝으로 나뉘어요. 아마 (b)에 대해서는 고민이 많으셨을텐데, (a)에 대해서는 잘 고민해보지 않으셨을거에요. 하지만 저는 (a)가 훨씬 중요하고 꼭 이해해야한다고 생각해요.