본문 바로가기

기록하기

기술 선택의 이유 정리하기 (1)

회원가입, 로그인

  • Spring Security
    • Authentication(인증) : 사용자의 신원을 확인
    • Authorization(인가) : 애플리케이션의 특정 부분에 대한 접근을 제한. 사용자의 역할에 따라 권한 부여 가능
    • 세션관리 : 웹 애플리케이션 보안을 유지하기위한 필수적 요소
      • 세션정책 'STATELESS' 사용 : 스프링시큐리티가 세션 생성 X, 기존의 것 사용 X -> JWT 토큰 방식을 사용하기 위해 


[시큐리티 세션정책]

// 스프링시큐리티가 항상 세션을 생성
SessionCreationPolicy.ALWAYS

// 스프링시큐리티가 필요시 생성(기본)
SessionCreationPolicy.IF_REQUIRED

// 스프링시큐리티가 생성하지않지만, 기존에 존재하면 사용
SessionCreationPolicy.NEVER

  • JWT(Json Web Token)
    • 장점 
      • 서버에 인증 정보에 대한 세션과 같은 저장소가 필요 없어서 부하가 훨씬 덜 걸림
      • 서버가 상태성을 갖지 않고도 회원을 인증/인가하고 필요한 서비스 제공 가능 
    • 단점
      • 처리 자체가 비용이 있으므로 인증 요청이 많아질수록 네트워크 부하가 심해질 수 있음
      • 토큰을 탈취당하면 대처하기 어렵다는 큰 보안적 이슈가 있음
      • 토큰 탈취의 가능성을 고려하여 토큰의 만료 시간을 짧게 설정해서 피해를 최소화 할 수 있지만, 이 때마다 사용자가 다시 로그인을 해야함
    • Refresh Token
      • JWT 토큰 탈취의 단점을 보안하기 위해 Refresh Token 사용
  • Email 인증
    •  
  • BCryptPasswordEncoder
    • 사용자의 비밀번호를 DB에 저장할 때, 암호화해서 저장하기 위해 사용
  • Header / Cookie
    • bearer 키워드를 사용하지 않음 -> bearer관련 처리하는 로직을 하나 줄이기위해..... 

CRUD

  • Shop
  • Pet
  • Review
  • Like
  • S3 - image

채팅

  • WebSocket
  • Stomp

서버 및 배포

  • CodeDeploy
  • S3
  • Github actions
  • AWS EC2 - Ubuntu

DataBase

  • RDS - MySQL
  • Redis(NoSQL)

ETC

  • P6spy
  • Swagger

'기록하기' 카테고리의 다른 글

샵 관련 문제  (1) 2024.01.02
실시간 채팅 구현하기 (1)  (0) 2023.12.25
Dependencies [1차 정리]  (0) 2023.12.18
AWS EC2 Ubuntu Docker 실행하기  (0) 2023.12.10
Day + 54  (0) 2023.12.08