유저의 identification을 확인하는 절차
A hash function is any function that can be used to map data of arbitrary size to fixed-size values. The values returned by a hash function are called hash values, hash codes, digests, or simply hashes. [출처_wikipedia]
- Salting: 실제 비밀번호 이외에 추가적 랜덤 데이터를 더해 digest를 구하는 방법
- Key Stretching: 단방향 해쉬 함수를 통해 계산 후 digest를 또 다시 해쉬하는 것을 반복하는 방법
로그인 성공 후 access token(암호화된 유저 정보)를 첨부하여 request를 보낸다.
Stateless한 HTTP의 특징 때문에 각각의 HTTP 통신은 독립적이기 때문에 로그인 이후 access token을 담아 매 통신마다 요청을 보내야 한다.
access token을 생성하는 기술 중 하나가 바로 JWT! 유저의 정보를 담은 JSON 데이터를 암호화하여 클라이언트와 서버 간 주고 받는 것이다.
id/pw 대신 access token을 사용하는 이유는?
[Performance 측면]
- No heavy bcrypt call, just a simple hash
[Client-side storage 측면]
- No actual ID and password stored in the client such as cookie.
- Also, token is very server specific - not reused in any other site.
유저가 요청하는 request를 실행할 수 있는 권한이 있는 유저인지를 확인하는 절차.
- 인증 절차를 통해 access token 생성
- access token을 담아 request
- 서버는 access token 복호화
- 복호화된 데이터를 통해 서버에서는 유저 정보를 얻음
- DB에서 해당 유저의 권한 확인
- 권한이 부여된 유저라면 request 승인
- 아니라면 Unauthorized Response(401) 혹은 다른 에러 코드 보냄
대부분의 웹 사이트에서 필수적으로 포함되어있는 기능, 인증&인가의 프로세스를 파악할 수 있었다!👩💻
backend와 어떻게 협업이 이루어지는지 하나하나 알아가는 것 같아 두근두근거린달까?ㅎㅎ