TIL

인증, 인가

효ㄷi 2024. 7. 30. 21:04

인증, 인가

1. 인증 = 사용자가 등록된 회원인지 확인하는 절차 (로그인 과정)

2. 인가 = 인증된 사용자가 특정 리소스에 접근할 권한이 있는지 확인하는 절차 (로그인 후 개인정보 페이지에 접근할 수 있는지 확인하는 과정)

 

 

쿠키, 세션, 토큰

1. 쿠키 = 브라우저에 저장되는 작은 데이터 조각 (키-값 형태로 저장)

서버가 응답 시 set-cookie 헤더를 통해 브라우저에 저장함

이후 클라이언트가 서버에 요청할 때 자동으로 쿠키를함 께 전송함

ex. 로그인 상태 유지 위해 사용

 

2. 세션 = 사용자와 서버 간의 연결이 활성화된 상태 의미

로그인 성공시 서버에서 세션을 생성하고 세션id를 클라이언트에 전달함

 

* 쿠키 - 세션 인증 방식

1. 로그인 과정 = 로그인 성공시 서버가 세션을 생성하고, 세션 id를 쿠키로 클라이언트에 전송

2. 인가 과정 = 클라이언트가 요청시 세션 id를 함께 전송하고 서버는 이를 통해 인증 상태 확인

한계 = 확장성 문제, 메모리 사용량 증가, 상태 유지의 복잡성, 보안 문제

 

3. 토큰 = 클라이언트에서 보관하는 암호화 또는 인코딩된 인증 정보

서버 상태를 유지하지 않고도 인증 상태 확인 가능

ex. jwt를 사용해 인증함

 

JWT(Json Web Token) = 세 부분으로 구성됨

1. 헤더 -> 토큰 종류, 서명 알고리즘 정보 포함

2. 본문 -> 사용자 정보, 토큰 만료 시간 포함

3. 서명 -> 토큰이 위조되지 않았는지 확인

 

* JWT 토큰 인증 방식

1. 로그인 과정 = 로그인 성공시 서버가 JWT를 생성하고 클라이언트에 전달

2. 인가 과정 = 클라이언트가 요청시 JWT를 함께 전송하고, 서버는 이를 통해 인증 상태 확인

3. refresh token = 보안을 강화하기 위해 사용, access token과 함께 사용됨

 

정리

1. 쿠키, 세션 = 주로 브라우저와 서버 간 상태를 유지하는 데 사용

2. jwt = 서버 상태를 유지하지 않고도 인증 상태를 확인할 수 있는 방