본문 바로가기

Spring/Security

웹의 인증 및 인가

1. 웹의 인증 및 인가

2. 스프링 시큐리티를 이용한 인증 및 인가

3. OAuth2를 이용한 소셜 로그인

4. JWT를 이용한 로그인

 

 

웹의 인증 및 인가

1. 인증 및 인가 정의

  • 인증 (Authentication): 사용자 신원을 확인하는 행위 -> 웹에서는 로그인을 통한 사용자 확인
  • 인가 (Authorization): 사용자 권한을 확인하는 행위 -> 웹에서는 로그인 후, 사용 권한 확인

 

2. 웹의 인증 및 인가

 

1) 필요성

  • HTTP 는 상태를 저장하지 않기(Stateless) 때문에 사용자를 구별하지 못함

  • HTTP 에 상태 정보를 유지(Stateful)하기 위해 쿠키와 세션을 사용함

쿠키(Cookie): 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일

 

세션(Sessoin): 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용

  • 서버에서 클라이언트 별로 유일무이한 '세션 ID' 를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
  • 서버에서 생성한 '세션 ID' 는 클라이언트의 쿠키값('세션 쿠키' 라고 부름)으로 저장되어 클라이언트 식별에 사용됨

  쿠키(Cookie) 세션(Session)
설명 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일 서버에서 일정시간 동안 클라이언트 상태 유지를 위해 사용
저장 위치 클라이언트 (웹 브라우저) 웹 서버
사용 예 사이트 팝업의 "오늘 다시보지 않기" 정보 저장 로그인 정보 저장
만료 시점 쿠키 저장 시 만료일시 설정 가능
(브라우저 종료시도 유지 가능)
아래 조건 중 하나가 만족될 경우 만료됨
1. 브라우져 종료 시까지
2. 클라이언트 로그아웃 시까지
3. 서버에 설정한 유지기간까지
해당 클라이언트의 재요청이 없는 경우
용량 제한 브라우저 별로 다름 (크롬 기준) - 하나의 도메인 당 180개 - 하나의 쿠키 당 4KB(=4096byte) 개수 제한 없음 (단, 세션 저장소 크기 이상 저장 불가능)
보안 취약 (클라이언트에서 쿠키 정보를 쉽게 변경, 삭제 및 가로채기 당할 수 있음) 비교적 안전 (서버에 저장되기 때문에 상대적으로 안전)