항해99 DAY32 [Spring Security]

Colleen·2023년 2월 19일
0
post-thumbnail

Spring Security

Spring Security는 Spring 기반의 어플리케이션의 보안(인증과 권한, 인가등)을 담당하는 스프링 하위 프레임 워크이다. Spring Security는 '인증'과 '권한'에 대한 부분을 Filter흐름에 따라 처리하고 있다. Filter는 Dispather Servlet 으로 가기 전에 적용되므로 가장 먼저URL 요청을 받지만, Interceptor는 Dispatcher와 Controller사이에 위치한다는 점에서 적용시기의 차이가 있다. Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점이 있다.
출처 : https://mangkyu.tistory.com/76

인증관련구조

인증과 인가

  • 인증 (Authentication) : 해당 사용자가 본인이 맞는지, 확인하는 절차
  • 인가(Authorization) : 인증된 사용자가 요청한 자원에 접근 가능한지를 결정하는 절차
    JWT내용을 들을 때 들어봤던 내용이라 반갑지 않았지만 싫지도 않음 -.-::

Spring Scurity 모듈

Authentication
Authentication는 현재 접근하는 주체의 정보와 권한을 담는 인터페이스이다. Authentication 객체는 Security Context에 저장되며, SecurityContextHolder를 통해 SecurityContext에 접근하고, Security Context를 통해 Authentication에 접근할 수 있다고 한다.

UsernamePasswordAuthenticationToken
UsernamePasswordAuthenticationToken은 Authentication을 Implements한 AbtractAuthenticationToken의 하위클래스로, User의 ID가 Principal역할을 하고, Password가 Credential의 역할을 한다. UsernamePasswordAuthenticationToken의 첫번째 생성자는 인증전의 객체를 생성하고, 두번째 생성자는 인증이 완료된 객체를 생성한다.

UserDetailsService
UserDetailsService 인터페이스는 UserDetails객체를 반환하는 단 하나의 메소드를 가지고 있는데, 일반적으로 이를 구현한 클래스의 내부에 UserRepository를 주인받아 DB와 연결하여 처리한다.

Spring Security Setting

Dependencies에 추가

testImplementation 'org.springframework.security:spring-security-test'

먼저 프로젝트에서 사용할 Dependency를 build.gradle에 추가해준다.

그 이외 내용은 내 깃허브링크로 올려본다.

https://github.com/colleenInKorea/myselectshop_w3.git
profile
이상한 나라의 개발하는 예대생

0개의 댓글