Java & Spring/Spring

29일차 - Spring강의(인증과 인가)

DJ.Kang 2024. 8. 23. 11:07

□ 인증과 인과

  • 인증(Authenication)
    • 해당 유저가 실제 유저인지 인증하는 개념
    • 지문인식, 로그인 등
  • 인가(Authorization)
    • 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념
    • 관리자 페이지, 관리자 권한 등
  • 서버와 클라이언트는 http라는 프로토콜을 이용하여 통신하는데 그 통신은 비연결성(Connectionless) 무상태(Stateless)로
    이루어진다.
  • 비연결성(Connectionless) : 서버와 클라이언트가 연결되어 있지 않다는 것, 이유는 리소스 절약을 위해서
  • 무상태(Stateless) : 서버가 클라이언트의 상태를 저장하지 않는다는 것

□ 인증의 방식

  • 쿠키-세션 방식
    1. 쿠키 : 클라이언트에 저장될 목저으로 생성한 정보를 담은 파일
    2. 세션
      • 서버에서 일정시간동안 클라이언트 상태를 유지하기 위해 사용
      • 서버에서 클라이언트별로 세션ID를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
      • 서버에서 생성한 세션ID는 클라이언트의 쿠키값으로 저장되어 클라이언트 식별에 사용  
  • JWT 기반 인증
  쿠키 세션
설명 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
저장위치 클라이언트(웹 브라우져) 웹 서버
사용 예 사이트 팝업의"오늘 다시보지 않기"정보 저장 로그인 정보 저장
만료 시점 쿠키 저장 시 만료일시 설정 가능 다음 조건 중 하나가 만족될 경우
1. 브라우저 종료
2. 클라이언트 로그아웃
3. 서버에 설정한 유지기간까지 재요청이 없는경우
용량 제한 브라우저별로 다름(크롬 기준)
- 하나의 도메인 당 180개
- 하나의 쿠키 당 4KB
개수 제한 없음
보안 취약 비교적 ㅇ

 

□ 쿠키 다루기

- 쿠키 생성

※ 공백이 있으면 쿠키 생성을 할 수가 없으나 URLEncoder를 통해 변환시켜 저장할 수 있다.

  1. URLEncoder.encode()메서드 사용
  2. URLEncoder.encode(value, 인코딩타입).replaceAll("\\+","%20"); 공백을 대체
  3. name-value형태로 cookie생성
  4. cookie.setPath()를 통해 경로 이하의 요청에만 쿠키가 전송
  5. cookie.setMaxAge()를 통해 만료기간 성정
  6. res.addCookie()를 통해 Response객체에 Cookie추가

- 쿠키 읽기

 

□ 세션 다루기

※ Servlet에서는 유일무이한 세션ID를 간편하게 만슬 수 있는 HttpSession을 제공한다.

 

- 세션 생성

 

-세션 읽기