□ 인증과 인과
- 인증(Authenication)
- 해당 유저가 실제 유저인지 인증하는 개념
- 지문인식, 로그인 등
- 인가(Authorization)
- 해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념
- 관리자 페이지, 관리자 권한 등
- 서버와 클라이언트는 http라는 프로토콜을 이용하여 통신하는데 그 통신은 비연결성(Connectionless) 무상태(Stateless)로
이루어진다. - 비연결성(Connectionless) : 서버와 클라이언트가 연결되어 있지 않다는 것, 이유는 리소스 절약을 위해서
- 무상태(Stateless) : 서버가 클라이언트의 상태를 저장하지 않는다는 것
□ 인증의 방식
- 쿠키-세션 방식
- 쿠키 : 클라이언트에 저장될 목저으로 생성한 정보를 담은 파일
- 세션
- 서버에서 일정시간동안 클라이언트 상태를 유지하기 위해 사용
- 서버에서 클라이언트별로 세션ID를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
- 서버에서 생성한 세션ID는 클라이언트의 쿠키값으로 저장되어 클라이언트 식별에 사용
- JWT 기반 인증
쿠키 | 세션 | |
설명 | 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일 | 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용 |
저장위치 | 클라이언트(웹 브라우져) | 웹 서버 |
사용 예 | 사이트 팝업의"오늘 다시보지 않기"정보 저장 | 로그인 정보 저장 |
만료 시점 | 쿠키 저장 시 만료일시 설정 가능 | 다음 조건 중 하나가 만족될 경우 1. 브라우저 종료 2. 클라이언트 로그아웃 3. 서버에 설정한 유지기간까지 재요청이 없는경우 |
용량 제한 | 브라우저별로 다름(크롬 기준) - 하나의 도메인 당 180개 - 하나의 쿠키 당 4KB |
개수 제한 없음 |
보안 | 취약 | 비교적 ㅇ |
□ 쿠키 다루기
- 쿠키 생성
※ 공백이 있으면 쿠키 생성을 할 수가 없으나 URLEncoder를 통해 변환시켜 저장할 수 있다.
- URLEncoder.encode()메서드 사용
- URLEncoder.encode(value, 인코딩타입).replaceAll("\\+","%20"); 공백을 대체
- name-value형태로 cookie생성
- cookie.setPath()를 통해 경로 이하의 요청에만 쿠키가 전송
- cookie.setMaxAge()를 통해 만료기간 성정
- res.addCookie()를 통해 Response객체에 Cookie추가
- 쿠키 읽기
□ 세션 다루기
※ Servlet에서는 유일무이한 세션ID를 간편하게 만슬 수 있는 HttpSession을 제공한다.
- 세션 생성
-세션 읽기
'Java & Spring > Spring' 카테고리의 다른 글
37일차 - Spring강의(JPA Audting) (0) | 2024.09.04 |
---|---|
31일차 - Spring강의(Entity 연관 관계) (0) | 2024.08.27 |
28일차 - Spring강의(Bean 수동 등록, Type중복 시 Bean 주입) (0) | 2024.08.22 |
26일차 - Spring강의(Entity, 영속성 컨텍스트) (0) | 2024.08.20 |
25일차 - Spring강의(IoC와 DI) (0) | 2024.08.19 |