본문 바로가기
[항해99] TIL

24일차 (인증/인가)

by @kkkk_biiin 2023. 9. 10.
728x90

인증/ 인가

1. 인증: 서비스를 이용하려는 유저가 등록된 회원인지 확인하는 절차

2. 인가: 특정 리소스에 접근할 수 있는 권한이 있는지를 확인하는 절차


=> http 프로토콜 통신 특징 2가지
1. 무상태(Stateless): 서버는 클라이언트의 상태를 기억하지 않음

2. 비연결성(Connectionless): 서버와 클라이언트는 연결되어 있지 않음

 

쿠키

1. 무상태와 비연결성이라는 통신의 특징에도 불구하고 마치 서버가 클라이언트의 인증 상태를 기억하는 것처럼
   구현할 수 있는 수단
   
2. 브라우저에 저장되는 텍스트 파일이며, key-value 형태로 저장

3. 별도로 삭제하거나 유효기간이 만료되지 않는 이상 서버와 통신할 때 자동으로 주고받게 됨

4. 서버에 특정 API를 요청할 때 서버가 응답시 header에 set-cookie 속성으로 쿠키 정보를 담아주면
   응답을 받는 브라우저는 쿠키를 브라우저에 자동으로 저장
   
5. 동일한 Origin 또는 CORS를 허용하는 Origin에게만 쿠키를 보냄
    1) Origin은 출처이며, localhost:3000까지
    2) CORS(Cross Origin Resource Sharing): 다른 출처에 리소스를 요청하는 것을 허용하는 정책

 

세션

// 사용자와 서버 간의 연결이 활성화된 상태
Const response = await axis.post(`$BASE_URL/login`),
{id, password}, {withCreadentials : true}

=> withCreadentials은 사이트 간 엑세스 제어 요청을 해야 하는지 여부를 나타냄

 

토큰

1. 클라이언트에서 보관하는 암호화된 인증 정보

2. 용도: 위조 방지

3. JWT: 웹에서 인증 수단으로 사용되는 토큰(Json Web Token)
    1) Header
    2) Payload
    3) Signature

 

세션인증 VS 토큰인증

// 인증정보 저장 위치
1. 세션 -> 서버
2. 토큰 -> 클라이언트

// 확장성
1. 세션 -> bad
2. 토큰 -> good

// 보안성
1. 세션 -> good
2. 토큰 -> bad

// 비용
1. 세션 -> expensive
2. 토큰 -> cheap
728x90

'[항해99] TIL' 카테고리의 다른 글

25일차 (useQueries)  (0) 2023.09.11
5주차 WIL (React Hook)  (0) 2023.09.10
23일차 (Throttling & debouncing & Lodash)  (0) 2023.09.08
22일차 (react-query)  (0) 2023.09.08
21일차(thunk, custom-hocks)  (0) 2023.09.06