IT/Analysis

20240320 - lombok, springboot 어노테이션, 시큐리티

상짱 2024. 3. 20. 19:10
반응형

@AllArgsConstructor

클래스의 모든 필드 값을 파라미터로 받는 생성자

 

@AllArgsConstructor(access = PACKAGE)

같은 패키지의 클래스에서 생성자에 접근 가능

 

@FieldDefaults(level = AccessLevel.Private, makeFinal = true)

클래스 내부의 필드마다 접근 제어자(private, public, protect)와 final 키워드를 자동으로 추가한다.

 

- Spring Security 

UserDetails

Spring Security에서 사용자의 정보를 담는 인터페이스.

사용자 정보를 불러오기 위해서 구현해야 하는 기본 오버라이드 메서드들

getAuthorities() - 계정 권한 목록

getPassword() - 계정의 비밀번호

getUsername() - 계정의 고유값

isAccountNonExpired() - 계정의 만료 여부 - true, 만료 안됨

isAccountNonLocked() - 계정의 잠김 여부 - true, 잠기지 않음

isCredentialsNonExpired() - 비밀번호 만료 여부 - true, 만료 안됨

isEnabled() - 계정 활성화 여부 - true, 활성화됨

 

- 스프링 시큐리티의 의존성이 주입되면, 자동으로 기본 로그인 화면이 추가된다.

아이디: user

비밀번호: 콘솔로그, Using generated security password 값

 

- 스프링에서는 Web기반의 시큐리티, Method기반의 시큐리티 기능을 제공한다.

메소드 기반은 메소드 별로 권한을 체크하는데, 웹 기반과 다르게 필터가 아닌 컨트롤러 단에서 권한을 처리하는 기능이다.

웹 시큐리티에서 URL, Token 유무로 인증을 하고,

메소드 시큐리티에서는 권한에 따라 인가를 하는 방법이다.

 

- 스프링 시큐리티 에서의 인증, 권한

인증: 나라는 주체가 맞는지 확인하는 것(신분 인증?)

권한: 나라는 주체가 맞다면, 서버 자원에 대한 권한이 있는지 확인하는 것.

 

- AbstractAuthenticationonProcessingFilter

브라우저 기반 HTTP 기반 인증 요청

http 기반 인증, http browser base 인증, 브라우저 인증?

 

- AbstractUserDetailsAuthenticationProvider

신분 인증

 

 

 

@EnableWebSecurity 

메소드 기반 시큐리티

Spring AOP proxy를 사용해 구현된 방법이다.

 

 

@EnableGlobalMethodSecurity -> @EnableMethodSecurity

 

 

시큐리티 기본 로그인 화면 제거 방법

1. 메인 클래스에 @SpringBootApplication(exclude = {SecurityAutoConfiguration.class}) 추가하여 제외시키는 방법

2. SecurityConfig 파일 만드는 방법.

 


 

@PropertySource(value = {xx.properties}, ignoreResourceNotFound = true)

properties 파일의 자원 설정

ignoreResourceNotFound - 자원이 없다면 무시.

 

@ConfigurationProperties(prefix = "xx.yy")

properties, yml 파일 자원의 프로퍼티명으로 클래스 내부 필드와 바인딩한다.

 

@EqualsAndHashcode(callSuper = false)

자바 bean에서 동등성 비교를 위해서 equals와 hashcode 메소드를 오버라이딩해서 사용하는데, 

해당 어노테이션을 사용하면 자동으로 이 메소드를 생성할 수 있다.

callSuper  설정시, 부모 클래스 필드 값들도 동일한지 체크,  false(default)일 경우 자신 클래스의 필드 값만 고려한다.

 


컴포넌트스캔시, 서브모듈들의 로드를 할려면, 메인서브모듈에 implements 해줘야 된다.

 

 

 

 

 

 

 

반응형

'IT > Analysis' 카테고리의 다른 글

20240321 - Vue 프로젝트 생성하기  (0) 2024.03.21