[SPRING] 인증과 인가

야부엉·2023년 11월 8일
0

SPRING

목록 보기
13/45

1.인증과 인가란 무엇일까?

  • 로그인은 인증(Authentication)인것이고, 회원/비회원 여부에 따른 권한(Authorization)을 부여하는 것이 인가!

2. 웹 어플리케이션의 인증

  • 서버-클라이언트 구조로 이루어져있고, Http 프로토콜을 이용하여 통신

1. Http 프로토콜 특성

  • 비연결성
    - 서버와 클라이언트 간의 연결되어 있지 않다
    - 서버는 하나의 요청에 대해서 하나의 응답을 보내고 연결을 끊는다
    - 즉, 리소스를 절약한다.
  • 무상태
    - 서버가 클라이언트의 상태를 저장하지 않는다.
    - 서버는 클라이언트가 이전에 어떠한 요청을 보냈는지 알지 못한다.
  • 이러한 특성들을 가지고 있는데도 클라이언트 입장에서는 왜 연속적으로 이전 정보를 가지고 있는것처럼 서버는 작동할까? -> 두 가지의 인증 방식으로 인해서(쿠키-세션 방식의 인증, JWT 인증 방식)

3. 쿠키 - 세션 방식의 인증

1. 개념

  • 서버가 특정 유저가 '로그인 되었다'는 상태를 저장하는 방식
  • 서버가 약간의 정보만 가지게 된다.
  • 즉, 인증과 관련된 최소한의 정보를 저장해서 로그인을 유지시킨다는 개념

2. 동작 방식


1. 사용자가 로그인 요청을 보냅니다.
2. 서버는 DB의 유저 테이블을 뒤져서 아이디 비밀번호를 대조합니다.
3. 실제 유저테이블의 정보와 일치한다면 인증을 통과한 것으로 보고 “세션 저장소”에 해당 유저가 로그인 되었다는 정보를 넣습니다.
4. 세션 저장소에서는 유저의 정보와는 관련 없는 난수인 session-id를 발급합니다.
5. 서버는 로그인 요청의 응답으로 session-id를 내어줍니다.
6. 클라이언트는 그 session-id를 쿠키라는 저장소에 보관하고 앞으로의 요청마다 세션아이디를 같이 보냅니다. (주로 HTTP header에 담아서 보냅니다)
7. 클라이언트의 요청에서 쿠키를 발견했다면 서버는 세션 저장소에서 쿠키를 검증합니다.
8. 로그인이 되어있는 사용자면 유저정보를 받아옵니다.
9. 이후에는 로그인 된 유저에 따른 응답을 내어줍니다.

4. JWT 인증 방식

1. 개념

  • JWT(Json Web Token) 는 인증에 필요한 정보들을 암호화시킨 토큰을 의미합니다.
  • 쿠키/세션 방식과 유사하게 JWT 토큰을 HTTP 헤더에 실어 서버가 클라이언트를 식별한다.

2. 동작 방식


1. 사용자가 로그인 요청을 보냅니다.
2. 서버는 DB의 유저 테이블을 뒤져서 아이디 비밀번호를 대조합니다.
3. 실제 유저테이블의 정보와 일치한다면 인증을 통과한 것으로 보고 유저의 정보를 JWT로 암호화 해서 발급합니다.
4. 서버는 로그인 요청의 응답으로 jwt 토큰을 내어줍니다.
5. 클라이언트는 그 토큰을 저장소에 보관하고 앞으로의 요청마다 토큰을 같이 보냅니다.
6. 클라이언트의 요청에서 토큰을 발견했다면 서버는 토큰을 검증합니다.
7. 이후에는 로그인 된 유저에 따른 응답을 내어줍니다.

profile
밤낮없는개발자

0개의 댓글