클라이언트
1. 로그인 요청
3. 로그인 성공
4. 인증에 정보가 필요한 요청을 함( 게시글 작성 or 로그인이 필요한 서비스)
- 담아준 accessToken을 headers['Authorization']에 담아서 요청
headers['Authorization'] = `Bearer ` + localStorage.getItem('accessToken')
이런 식으로
6. 클라이언트에서 넘어온 요청이 401 에러면, refreshToken으로 유효한 accessToken 요청
8. 발급받은 accessToken으로 다시 실패한 요청을 보냄( 5-1번으로 이동)
서버
2. accessToken, refreshToken 발급 ( accessToken은 cokkie httpOnly 저장을 위한 3가지 방법)
1) localStorage
2) cookie -> XSS CSRF 공격에 취약
3) private variable
5. 클라이언트로부터 받은 accessToken을 parsing(유효한지 아닌지 판단)
5-1 성공
return ;
5-2 실패
401 UnAuthorized Error 를 클라이언트로 보내줌
7. 받은 refreshToken을 parsing accessToken을 만들어서 보내줌
** 실패를 하더라도 accessToken을 발급 받을 수 있는 환경이라면 성공한 것처럼 보여줘야 함.
-> Interceptor 개념 (성공콜백, 실패콜백)
request -> 요청 전
accessToken을 header에 Authorization에 담아놓는다면 좀 더 편하게
response -> 응답 전
실패콜백은 6번~8번까지의 과정을 실행하는 것.
'it > nestjs' 카테고리의 다른 글
Nest.JS MQTT 통신 브로커 연결 (2) | 2023.05.03 |
---|---|
Next.js( react-slick ) (1) | 2023.03.23 |
JWT Token (0) | 2023.02.02 |
typescript로 날씨 api 가져오기 (0) | 2023.01.19 |
Nest.js 구글 로그인(1) (1) | 2023.01.11 |
댓글