<!-- security -->
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${org.springframework-security-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>${org.springframework-security-version}</version>
</dependency>
<!-- security -->
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
filter-name은 무조건 springSecurityFilterChain 로 해야 한다. 스프링에서 의존하는 필터이기 때문이다.
security는 접속 할 때부터 실행되어야 한다. root에 넣어놓자.
3.1부터 어노테이션을 통한 자바 설정 지원하기 때문에 3.2부터는 xml로 설정하지 않고도 security가능
xml기반 설정
web.xml에 DelegatingFilterProxy라는 springSecurityFilterChain을 등록
어노테이션기반 설정
WebSecurityConfigurerAdapter을 상속받은 클래스에 @EnableWebSecurity 어노테이션을 명시하면 된다.
그리고 포함된 springSecurityFilterChain을 등록하기 위해서는 AbstractSecurityWebApplicationInitializer을 상속받은 WebApplicationInitializer을 만들어 두면 된다.
그 다음에는 보통 스프링 MVC를 이용해서 애플리케이션을 구성하기 때문에 ApplicationIniticalizer에 WebSecurityConfigurerAdapter를 상속받은 클래스를 getRootConfigClasses() 메소드에 추가하는 것으로 스프링 시큐리티에 대한 기본적인 적용은 끝입니다.
위 두개는 같은 결과임
UserDetails = 사용자 정보, 그래서 user 클래스 제공한다. 이는 이름, 패스워드, 권한에 대한 필드만 존재
-> 부가적인 정보를 담으려면 UserDetails이라는 구현체를 직접 만들어야 한다.
UserDetailsService = 스프링 시큐리티 인증 시에 사용된다.
UserRepository를 통해 저장된 인증정보를 검색한후 존재하지 않으면 UsernameNotFoundException을 던지고 있으면 UserDetails객체 반환.(MemberWrapper생각)
패스워드 검증하는 곳