[220425]_TIL

적자생존·2022년 4월 26일
0

TIL

목록 보기
28/35

오늘의 목표
1. 리프레시 토큰
2. graphql이 사실은 rest api였다?

  1. 리프레시 토큰
    브라우저에서 로그인 하면 JWT1, JWT2가 발급되고 다시 브라우저에 accesstoken, refreshToken을 발급한다
    refreshToken은 cookie에 넣는다
    cookie도 수정되지 않냐?
    httpOnly라는 옵션을 넣어서 수정이 불가능하게 만들고 secure옵션을 줘서 https로 통신가능하게 해준다
    ![]

cookie(refreshToken)
state(accessToken)

accessToken만료후
api요청(ex createProduct) 하면 인가단계에서 토큰만료가 나옴
그러면 브라우저에 error를 반환함(UNAUTHENTICATED)

그러면 restoreAccessToken으로 접근하고 JWT가 다시 반환되면 accessToken이 새로 생성됨

이후에 실패했던 api(ex createProduct)요청을 다시 함

그러면 이제 accessToken이 발급이 되어있어서 성공이 됨


1. on error => UNAUTHENTICATED
2. restoreAccessToken
3. 방금실패한 api요청 재시도

이 과정이 너무 빠르기 때문에 silentAuth라고 부름
개빠름

그러면

login logout restoreAccessToken을 따로 백엔드로 빼면?

즉 로그인 관련 백엔드1, 나머지 백엔드2
이런 백엔드1을 AuthService라고 함
인증용
백엔드2를 resorceService라고 함
인가용

OpenAuthentication이 있음
이게 뭐냐? 구글 카카오 로그인 같은것
즉 AuthService를 제공하는 것
백엔드1을 따로 제공만하고 나머지는 인가만 해주고
소셜로그인이라고 함

MicroService -MSA
AuthService따로
BoardService따로
ProductService따로 만들고 db도 각각 만들어둠

이게 요즘 백엔드 대세임

예전에 한 번에 다 해놓으면 홈페이지 접속이 안됬으나
이렇게 나누는 순간 하나가 에러나면 그것만 작동이 안되고 나머지는 정상작동이 됨

apollo도 restApi이기 때문에 axios로 요청이 가능하다

  1. Graphql도 사실은 rest api이다

게시글 조회
axios.get(API주소)
게시글 등록
axios.post(API주소, {데이터})

profile
적는 자만이 생존한다.

0개의 댓글

관련 채용 정보