SpringBoot 로그인 이론 (with. SpringSecurity, JWT, OAuth)

신준호·2023년 10월 27일
0
post-thumbnail

이번에는 SpringSecurity를 이용하여 로그인 하는 방식을 정리해보자!!
우선 로그인 방식에는 크게 세션을 이용한 방식과 jwt 이용한 방식이 있다..

세션 방식

  • 과정
    • 로그인을 통해 사용자를 확인한 후 회원 정보를 세션에 저장한 후 이와 연결되는 세션 ID를 발급한다.
    • 이후 클라이언트는 매 요청마다 header에 세션 ID가 담기 쿠키를 넣어 통신하는 방식으로 인증을 진행한다.
  • 장점
    • 쿠키 자체이는 유의미한 값을 가지고 있지 않기 때문에 안전하다.
    • 일일이 회원 정보를 확인할 필요가 없기 때문에 서버 자원에 접근하기 용이하다.
  • 단점
    • 쿠키가 탈취되었을 경우 정보를 잘못 전달할 수 있는 위험성이 존재한다.
    • 서버에 세션 저장소를 필요로 하기 때문에 추가적인 저장 공간이 필요하다.

JWT 방식

  • 과정
    • jwt(JSON Web Token)는 인증에 필요한 정보들이 암호화된 토큰이며 엑세스 토큰과 리프레시 토큰으로 사용한다.
    • 사용자가 로그인을 진행하면 계정 정보를 확인한 후 jwt 형식의 엑세스 토큰을 발급하여 건네준다.
    • 매 요청마다 헤더에 엑세스 토큰을 실어 보내는 방식으로 인증을 진행한다.
  • 장점
    • 추가 저장소 없이 간편하게 인증할 수 있다.
  • 단점
    • 토큰이 탈취되었을 시 토큰의 유효 기간이 만료되기 전까지 대처할 방법이 없다.

Refresh Token 방식(JWT)

  • 과정
    • 위의 문제를 해결하기 위해 리프레시 토큰을 이용한다.
    • 엑세스 토큰의 유효 기간을 적게 하여 진행한다.
    • 엑세스 토큰의 유효 기간이 만료되었을 경우 리프레시 토큰을 서버에 요청하여 새롭게 엑세스 토큰을 발급받는다.
  • 장점
    • 엑세스 토큰을 탈취하더라도 유효기간이 짧아 사용 기간이 짧으며, 리프레시 토큰은 안전한 저장소에 저장되기 때문에 기존 방식보다 안전하다.
  • 단점
    • 엑세스 토큰이 만료될 때마다 새롭게 발급하기 때문에 서버의 자원 낭비가 발생한다.

OAuth 방식

  • 과정
    • SNS 로그인등에서 자주 사용한다
    • 클라이언트가 서버에 인증 요청을 진행하면 서버는 권한 증서를 구글,네이버 등의 서드 파티 서버에 전달하고 리프레시 토큰을 발급받는다.
    • 서버에서는 리프레시 토큰을 이용하여 엑세스 토큰을 발급받아 통신하는 방식으로 인증을 진행
    • 액세스 토큰이 만료되면 서버는 이를 확인하여 새로운 엑세스 토큰을 발급한다.
profile
개발 공부 일지

0개의 댓글