[spring] Auth

쓰옹·2022년 12월 13일
0

** 스프링 시큐리티: 스프링에서 인증, 인가를 관리해주는 프레임워크

인증(Authentication)

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

인가(Authorization)

해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념 ex)관리자페이지-관리자권한

로그인 시

  • 인증 - 비밀번호 입력, 제출
  • 인가 - 회원/비회원 여부 확인

인증의 방식

“우리는 웹 어플리케이션의 인증을 배운다”

  • 웹 어플리케이션

    • 서버-클라이언트 구조
    • Http 프로토콜 통신 - 비연결성 무상태로 이루어짐
      • 비연결성(Connectionless)

        서버와 클라이언트가 연결되어 있지 않음 → 리소스 절약

        • 하나의 요청에 하나의 응답을 내고 연결을 끊는다.
      • 무상태(Stateless)

        서버가 클라이언트의 상태를 저장하지 않는다 → 서버의 비용, 부담 절감

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

  • 특정 유저가 로그인 되었다는 상태를 서버에 저장하는 방식
  • 인증과 관련된 최소한의 정보를 저장해 로그인을 유지시킨다

쿠키와 세션 내용 정리

2. JWT 기반 인증

  • JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별

JWT(JSON Web Token)

  • Json 포맷을 이용하여 사용자에 대한 속성 저장
  • Claim 기반 Web Token
  • 인증에 필요한 정보들을 암호화시킨 토큰

JWT 사용

  • Client에 로그인정보를 JWT로 암호화햐여 저장 → JWT를 통해 인증/인가

  • 모든 서버에 동일한 Secret Key 소유

JWT 장/단점

  • 장점

    • 동시 접속자가 많을 때 서버 측 부하 낮춤
      • 서버에 직접 저장하지 않고 브라우저에 저장해놨다가 시크릿키로 위조 검증만 하기 때문
    • Client, Server 가 다른 도메인을 사용 가능
      • ex) 카카오 OAuth2 로그인 시 JWT Token 사용
  • 단점

    • 구현의 복잡도 증가
    • JWT 에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)
      • JWT가 길어서 HTTP 용량 많이 차지함
    • 기 생성된 JWT 를 일부만 만료시킬 방법이 없음
      • 만료시간은 있는데 그 전에 강제로 종료시킬 방법이 없음
    • Secret key 유출 시 JWT 조작 가능

인증은 쿠키-세션 방식과 JWT 기반 방식을 기반으로 이루어지고, 각각의 방법을 더 고도화한
방식들도 있다. 예를들어 JWT같은 경우는 Refresh token과 Access token으로 분리해서 더 높은 보안과 편의성을 가져가기도 한다. 또한 각 방식에 기반한 OAUTH 소셜로그인도 있습니다.

profile
기록하자기록해!

0개의 댓글