Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

요리사에서 IT개발자로

스파르타 부트캠프 Spring Master 3강 인증과 인가란 본문

Spring

스파르타 부트캠프 Spring Master 3강 인증과 인가란

H.S-Backend 2024. 5. 24. 15:58

인증(Authentication)

해당 유저가 실제 유저인지 인증하는 개념


인가(Authorization)

해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념


웹 애플리케이션 인증

서버와 클라이언트 구조로 되어있으며

이 요소들은 멀리 떨어져있다.

 

통신방식은

Http프로토콜(통신규약)을 지키며 통신을 하는데

통신은 비연결성(Connectionless) 무상태(Stateless)로 이루어진다.

 


 

 비연결성(Connectionless)이란

서버와 클라이언트가 서로 연결되어 있지 않다.

실제로 우리는 서버에게 요청을 하면 요청을 응답하고 연결을 끊어내고 있다.


무상태(Stateless)란

서버가 클라이언트의 상태를 저장하지 않는다.

실제로 서버는 클라이언트가 어떠한 요청을 보냈는지 관심이없고 알지 못한다. 

 

결국 비연결성과 무상태는
서버가 요청에대한 응답만하며연결을 끊어낸다는 것.

&

기존 DB는 그대로 지키고 있다는 것


이렇게 하는 이유는 서버의 비용부담때문이다.


쿠키- 세션 인증 방식

  1. 사용자가 로그인 요청 (아이디, 비밀번호)
  2. 사용자가 맞는지 확인 (아이디와 비밀번호 대조)
  3. 일치하면 세션저장소에 해당 유저가 로그인 되었다는 정보를 입력
  4. 세션 저장소는 유저의 정보와 상관없는 난수 Session ID발급
  5. 서버는 로그인 요청의 대한 응답으로 Session ID와 함께 응답하며
  6. 사용자는 Session ID 를 쿠키 저장소에 보관, 앞으로 요청할때마다 Session ID를 같이보낸다.(HTTP header에 담아서 보낸다)
  7. 사용자의 요청에 쿠키를 발견한다면 서버는 세션저장소에서 쿠키를 검증한다.
  8. 로그인이 되어있는 사용자의 한해서 응답을 내어준다.
결국 로그인한 사용자는
Session ID를 출입 카드키처럼 발급을 받아서

서버에게요청을 할 수 있고

또한 사용자가 요청 할 때마다
쿠키인증 방식을 통해 서버에게 요청한 데이터를 받을 수 있는것.

Cookie?

서버가 사용자의 웹브라우저에 전송하는 작은 데이터 조각.

브라우저는 이 데이터 조각들을 저장해 놓았다가 동일한 서버에 재 요청시 저장된 데이터를 함께 전송.

쿠키는 두 요청이 동이한 브라우저에 들어왔는지 아닌지를 판단할 때 주로 사용한다. 

이를 이용하면 사용자의 로그인 상태를 유지할 수 있고 무상태 HTTP 프로토콜에서 브라우저의 상태정보를 기억할 수 있게 하는 방법이다.

https://dream-and-develop.tistory.com/196

 

[Web] 웹 브라우저 쿠키(Cookie)와 세션(Session)의 개념

어떠한 사이트에 한 번 로그인을 하고 나면 사이트 내 여러 페이지들을 접속할 때 로그인이 유지되거나 혹은 ID, PW를 저장해두어 며칠 뒤 재 접속을 하더라도 다시 입력하지 않고 자동 로그인 되

dream-and-develop.tistory.com


JWT(JSON Web Token)이란 

인증에 필요한 정보들을 암호화시킨 토큰을 의미한다.

 

JWT기반 인증은

쿠키/세션 방식과 유사하게

JWT토큰(Access Token)을 HTTP header 에 실어서

서버가 클라이언트를 식별한다.

  1. 사용자가 로그인 요청(iD, password)
  2. 서버는 DB에 로그인 요청정보를 대조
  3. 일치한다면 인증통과한 것으로보고 유저의 정보를 JWT로 암호화해서 보낸다
  4. 서버는 로그인 요청의 응답으로 JWT 토큰을 내어준다.
  5. 사용자는 받은 JWT토큰을 저장소에 보관하고 앞으로 요청할 때마다 토큰을 같이보낸다.(대신 기간이 만료되면 X)
  6. 사용자는 요청에서 토큰을 발견했다면 서버는 토큰을 검증한다.
  7. 이후에는 토큰만 인증이된다면 서버가 바로 응답을 해준다.

 

쿠키-세션인증방식은

세션저장소가 쿠키를 검증하면서 

요청에대한 응답을 해줬는데

 

JWT는 쿠키를 따로 검증하지않고

유효한 JWT토큰을 가지고있다면

 

별다른 검증없이  응답을 해준다.

 

 

반응형