멋사 Backend 53일차 🦁

신재원·2023년 7월 6일

🔎 Spring

📢 다양한 의존성 주입

다양한 의존성 주입 방법은 이전 블로그를 참고 하시면될것 같습니다.

📚 Spring Security 란?

  • 서비스에는 사용자라는 개념이 존재하며, 그에 따른 인증과 권한에 대한 처리를 해줘야 합니다.

인증 vs 권한 ❓

  • 인증 이란 사용자가 "누구" 인지를 증명하는 과정입니다.
  • 권한 이란 인증된 사용자가 어떤 작업 을 수행할수 있는지를 결정하는 과정입니다.

Spring Security 를 사용하기 위해서는 아래의 의존성을 추가 해줘야 합니다.

implementation 'org.springframework.boot:spring-boot-starter-security'

http 구성

  • SecuriyFilterChain : 스프링 빈으로 등록하여 보안을 설정합니다.
  • ❗❗❗ 핵심
    permitAll() 혹은 authenticated() : 직전에 있던 requestMatcherurl 을 어떻게 처리할것인지 방식을 정하는 것입니다.
  • 빌더 패턴으로 보안 설정 메소드를 작성해줍니다.

form 로그인 처리

  • 위 사진의 http 구성 로직에 추가하여 작성해줍니다.
    • formLogin 이라는 메소드를 이용해 보안 설정을 해줍니다.

✔403 에러 코드 : 서버에 요청이 전달 되었지만, 권한 때문에 허가되지 않은 사용자

로그인 (Sign Up)

가장 기본적인 사용자 인증 방식

  1. 사용자가 로그인 페이지로 이동
  2. 서버는 사용자를 로그인 페이지로 이동시킴
  3. 사용자는 로그인 페이지를 통해 아이디와 비밀번호 전달
  4. 아이디와 비밀 번호 확인 후 사용자를 인식
    ➡ 이후 쿠키를 이용해 방금 로그인한 사용자를 세션을 이용해 기억한다.
  • HTTP 요청에는 상태가 없습니다. 여기서 발생하는 문제점은 ?

우리가 흔히 로그인을 하고 로그인이 유지됩니다.
➡ 로그인이 유지 되지 않으면 매번 로그인을 다시 하거나, 장바구니에 있는 상품들이 다 없어지는 상황등이 벌어집니다.

이러한 상황을 막기위해 쿠키와 세션이 등장합니다. (정보를 유지하기 위해 사용)

쿠키와 세션 두개를 다 사용하는 이유 ❓

  • 세션은 쿠키에 비해 보안도가 높은편입니다. 그럼에도 쿠키를 사용하는 이유는 세션은 서버에 저장되며 소모하는 자원이 상당해 쿠키에 비해 속도가 느립니다.

🍘 쿠키와 세션의 차이?

  • 쿠키는 세션에 비해 보안도가 떨어집니다.
  • 쿠키는 서버의 자원을 전혀 사용하지 않으며, 세션은 서버의 자원을 사용합니다.
  • 쿠키는 세션에 비해 속도가 빠릅니다.

Reference

https://hahahoho5915.tistory.com/32

0개의 댓글