Spring Security & Spring Annotation

devguri·2023년 5월 30일
0

Spring Security란 ?

인증과 권한, 인가 등 애플리케이션 보안을 담당하는 스프링 하위 프레임워크

인증
사용자가 본인인지 확안하는 절차

인가
인증된 사용자가 요청 자원에 접근 가능한지 결정하는 절차

인증 후 -> 인가의 절차를 진행함

접근 주체 (principle)
보호받는 REsouce에 접근하는 대상

비밀번호(Credential)
Resouce에 접근하는 대상의 비밀번호

  • 인증 절차 후 인가 절차 진행한다. 인가 과정에서 해당 리소스에 대한 접근 권한 있는지 확인.
  • 인증과 인가를 위해 Principle을 아이디로, Credential을 비밀번호로 사용하는 인증방식 사용
  • 세선-쿠키 방식을 기본으로 적용

Spring Security 동작원리

  1. 사용자가 로그인 정보 담긴 Request 보낸다.
  2. AuthenticationFilter가 요청을 받아서 UsernamePasswordAuthenticationToken토큰 생성
  3. AuthenticationFilter로 부터 인증용 객체를 전달 받는다
  4. 토큰 처리할 수 있는 Provider을 선택한다.
  5. 인증절차 - 사용자의 정보와 로그인 정보 비교
  6. 화면에서 입력한 로그인 정보를 가져올 수 있다.
  7. DB에 있는 사용자 정보 가져오려면, UserDetailsServiece 인터페이스 사용
  8. username으로 DB에 있는 사용자 정보를 UserDetails 형으로 가져온다. 일치하면 Authentication 참조를 리턴한다.
  9. 인증 완료된 사용자 정보 가진 Authentication 객체를 SecurityContextHolder에 담은 이후 AuthenticationSuccessHandle을 실행한다.

Spring Annotation

@Autowired

Bean 객체 주입받기 위해 사용

@GetMapping

RequestMapping(Method=RequestMethod.GET)과 똑같은 역할

@AllArgsConstructor

class 모든 필드 값을 파라미터로 받는 생성자 추가

@NoArgsConstructor

기본 생성자를 자동으로 추가해줌

@Component

직접 작성한 class를 Bean으로 등록하기 위한 Annotation

@RestController

View로 응답하지 않는 컨트롤러를 의미한다.
method 반환 결과를 JSON 형태로 반환한다.

@Controller, @RestController 차이

  • @Controller는 APi와 View를 동시에 사용하는 경우이다.
  • @Controller에서 Api 서비스로 사용하는 경우는 @ResponseBody를 사용하여 객체 반환한다.
  • @RestController는 기본적으로 @ResponseBOdy의 의미로 json, xml을 반환한다.

->@RestControlelr = @Controller + @ResponseBody

@Configuration

@Configuration을 클래스에 적용하고 @Bean을 해당 Class의 method에 적용하면 @Autowired로 Bean을 부를 수 있다.

@PostConstruct, @PreConstruct

의존하는 객체를 생성한 이후 초기화 작업을 위해 객체 생성 전/후에 실행해야 할 method 앞에 붙인다.

@Value

properties에서 값을 가져와 적용할 떄 사용한다.

@SpringBootApplication

@Configuration, @EnableAutoConfiguration, @ComponentScan 3가지를 하나의 애노테이션으로 합친 것

@RequestPart

Request로 온 MultipartFile을 바인딩해준다.
@RequestPart("file") MultipartFile file

@Builder

현재 어떤 필드에 어떤 값 채워야할지 생성 시점에 값을 채워준다.
생성시점에 값을 채워준다.

@Data

@Getter @Setter @EqualsAndHashCode @AllArgsConstructor을 포함한 Lombok에서 제공하는 필드와 관련된 모든 코드를 생성

@Data는 사용하지 않는게 좋음

profile
Always live diligently

0개의 댓글

관련 채용 정보