Skip to content

apollo server에서 사용자 인증 관리 토의

조찬영 edited this page Nov 22, 2020 · 1 revision

apollo server에서 사용자 인증 관리

문제

  • graphql을 이용해서 토큰 인증 방식을 사용할 때 문제가 발생
  • 첫 번째로 graphql context에서 인증을 처리하는 방식을 생각해봤는데 하나의 엔드포인트에서 로그인, 회원가입, API요청을 모두 처리하는데 로그인과 회원가입은 토큰을 요구하지 않기 때문에 문제 해결 X
  • 두 번째 방법은 graphql resolvers 함수에서 API요청이 필요한 부분을 인증 래퍼함수로 감싸주는 방식 생각 -> API 요청을 처리하는 resolvers 함수마다 감싸줘야해서 불편(?) 생산성 저하 우려, 다른 방법 찾아보자
  • REST API와 graphql을 같이 사용 -> Apollo 블로그에서도 권장하는 것 같다.

방법

  • express 내부에 REST API를 따로 생성 후 로그인, 회원가입 API는 따로 개발

    • 장점
      • 구현이 비교적 간단함
      • 확장이 쉬움
    • 단점
      • graphql이 아닌 다른 url로도 접근을 해야하는 점
      • client에서 따로 graphql용 라이브러리가 아닌 rest api용 라이브러리를 사용해야함
  • graphql 메서드에서 인증 권한 래퍼 함수 생성 후, 인증이 필요한 resolver 마다 래핑

    • 장점
      • 하나의 url로 구현 가능
      • client에서 추가적인 라이브러리 설치가 없음
    • 단점
      • 구현이 복잡하고 번거로움
      • 확장도 어려움

관련 자료

Graphql Authentication

Clone this wiki locally