스프링 잠금
Spring Security는 Spring 기반 애플리케이션에서 인증 및 권한 부여를 담당하는 프레임워크입니다.
Spring Security를 사용하면 다양한 인증 방법을 사용하여 보안을 강화할 수 있으며 세분화된 권한 제어를 통해 안전한 웹 애플리케이션을 개발할 수 있습니다.
Spring Security는 Spring Framework와 연동하여 사용할 수 있으며 다양한 인증 방식과 권한 제어 기능을 제공합니다.
Spring Security는 Spring 기반 웹 애플리케이션에 필수적인 매우 강력하고 유연한 보안 프레임워크입니다.
Spring Security로 인증 및 권한 부여 기능을 쉽게 구현할 수 있으며, 필요에 따라 세부 설정을 통해 보다 정교한 보안 기능을 구현할 수 있습니다.
Spring Security는 다음과 같은 다양한 보안 기능을 제공합니다.
B. 사용자 인증, 권한 부여, 보안 설정 및 보안 코딩 정책. Spring Security를 통해 웹 애플리케이션에 나타날 수 있는 다양한 보안 위협을 예방하고 대응하여 안전한 웹 애플리케이션을 개발할 수 있습니다.
Spring Boot에서 먼저 Spring Security를 사용하려면 spring-boot-starter-security
종속성을 추가해야 합니다.
implementation 'org.springframework.boot:spring-boot-starter-security'
그리고 보안 설정 클래스를 생성하여 원하는 설정을 구현할 수 있습니다.
@Configuration
public class SecurityConfig {
@Autowired
private PrincipalDetailService principalDetailService;
@Bean
public BCryptPasswordEncoder encodePWD(){
return new BCryptPasswordEncoder();
}
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
auth.userDetailsService(principalDetailService).passwordEncoder(encodePWD());
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
http.csrf().disable()
.authorizeRequests()
.antMatchers("/", "/auth/**", "/js/**", "/css/**", "/image/**")
.permitAll()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/auth/loginForm")
.loginProcessingUrl("/auth/loginProc")
.defaultSuccessUrl("/");
return http.build();
}
SecurityFilterChain
필요한 권한을 설정합니다.
위의 예에서 모든 사용자는 "/", "/auth/**", "/js/**", "/css/**", "/image/**"
Spring Security 기반 로그인에 대한 액세스를 허용합니다.
"/auth/loginForm"
그대로 놔두세요. 가입 양식의 작업 URL은 다음과 같습니다.
"/auth/loginProc"
방법이 됩니다.
Spring Security 종속성을 추가하고 서버를 다시 시작하면 로그인 페이지로 이동합니다.
사용자 이름은 기본적으로 사용자입니다.
서버 콘솔 창에서 비밀번호를 확인할 수 있습니다.
Using generated security password: a4b1274f-6c80-4dff-bd08-bc9dccf06617
세션은 입력하는 순간부터 자동으로 생성됩니다.
<html xmlns:th="http://www.thymeleaf.org"
xmlns:sec="http://www.thymeleaf.org/extras/spring-security">
<div>
<!
--ROLE_USER 권한을 갖는다면 이 글이 보임-->
<h1 sec:authorize="hasRole('ADMIN')">Has admin Role</h1>
<!
--ROLE_ADMIN 권한을 갖는다면 이 글이 보임-->
<h1 sec:authorize="hasRole('USER')">Has user Role</h1>
<div sec:authorize="isAuthenticated()">
Only Authenticated user can see this Text
</div>
<!
--인증시 사용된 객체에 대한 정보-->
<b>Authenticated DTO:</b>
<div sec:authentication="principal"></div>
<!
--인증시 사용된 객체의 Username (ID)-->
<b>Authenticated username:</b>
<div sec:authentication="name"></div>
<!
--객체의 권한-->
<b>Authenticated user role:</b>
<div sec:authentication="principal.authorities"></div>
</div>