[Spring Boot] 스프링 부트와 AWS로 혼자 구현하는 웹 서비스3

쑥쑥🌿·2023년 6월 12일

Chapter05.
Spring Security와 OAuth2.0으로 로그인 기능 구현하기

학습 목표

  • 스프링 시큐리티와 스프링 시큐리티 Oauth2 클라이언트란
  • 스프링 시큐리티와 OAuth 2.0을 구현한 구글 로그인 연동한 로그인 기능 구현

chap5-1. Spring Security와 Spring Security Oauth2 클라이언트

🧾 Spring Security?

 👉 Spring Security는 막강한 인증(Authentication)과 인가(Authorization) 혹은 권한 부여 기능을 가진 프레임워크
 👉 Srping 기반의 애플리케이션에서는 보안을 위한 표준이라고 볼 수 있음 
 👉 Intercepter, filter 기반의 보안 기능을 구현하는 것보다 스프링 시큐리티를 통해 구현하는 것을 적극적으로 권장함

🧾 로그인 기능을 소셜 로그인으로 구현하는 이유?

👉 직접 구현할 경우 아래와 같이 품이 많이 들어감 
	- 로그인 시 보안
    - 회원가입 시 이메일 혹은 전화번호 인증
    - 비밀번호 찾기
    - 비밀번호 변경
    - 회원정보 변경 
👉 소셜 로그인을 이용하면 위의 기능 구현에 시간을 절약할 수 있으므로 서비스 개발에 집중할 수 있음

chap5-2. google 서비스 등록

  1. 구글 클라우드 플랫폼 주소
  2. google 서비스 등록 따라하기

🧾세션 저장소로 데이터베이스 사용하기

  • 현재 서비스는 application을 재실행하면 로그인이 풀린다.
    내장 톰캣의 메모리에 session이 저장되기 때문이며,
    기본적으로 세션은 실행되는 WAS(web application server)의 메모리에 저장되고 호출된다.
    메모리에 저장되다 보니 내장 톰캣처럼 application을 재실행되는 구조에선 항상 초기화가 된다.
    즉, 배포할 때마다 톰캣이 재시작되는 것이다.

  • 2대 이상의 server에서 서비스를 하고 있다면 톰캣마다 세션 동기화 설정을 해야 한다.

    💡 세션 저장소 사용 방법의 종류

    1. 톰캣 세션을 사용한다.
      • 기본적으로 선택되는 방식
      • 톰캣에 세션이 저장되는 형태로 2대 이상의 WAS 구동시 톰캣 간의 세션 공유 설정 필요

    2. MySQL과 같은 DB를 세션 저장소로 사용한다. (WAS간 공용 세션을 사용하기 가장 쉬운 방법이나,
      • 여러 WAS간 공용 세션을 사용하는 가장 쉬운 방법
      • 로그인 시 DB IO 발생하므로 성능 이슈 발생 가능성 있음
      • 백오피스, 사내 시스템 용도에서 사용 多

    3. Redis, Memcached와 같은 메모리 DB를 세션 저장소로 사용
      • B2C 서비스에서 가장 많이 사용
      • Embedded Redis와 같은 방식이 아닌 외부 메모리 서버가 필요


chap5-3. 네이버 로그인

  1. 네이버 Open API
profile
날로 날로 발전하기.

0개의 댓글