Security 25

[스프링 시큐리티] 스프링 시큐리티 커스터마이징 - PasswordEncoder

스프링 시큐리티의 비밀번호는 반드시 인코딩 해야한다 스프링 시큐리티가 제공하는 PasswordEncoder는 특정한 포맷으로 동작함 {id}EncodedPassword 다양한 전략의 패스워드 인코더를 사용할 수 있다. @Bean public PasswordEncoder passwordEncoder() { return PasswordEncoderFactories.createDelegatingPasswordEncoder(); } 위와 같이 Bean을 등록하면 스프링 시큐리티가 기본적으로 제공하는 다양한 인코더를 사용할 수 있다 public final class PasswordEncoderFactories { private PasswordEncoderFactories() { } public static Pas..

스터디-Spring 2022.01.08

[스프링 시큐리티] 스프링 시큐리티 커스터마이징 - JPA 연동

JPA + H2 추가 org.springframework.boot spring-boot-starter-data-jpa com.h2database h2 runtime Account Entity @Entity public class Account { @Id @GeneratedValue private Integer id; @Column(unique = true) private String username; private String password; private String role; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return use..

스터디-Spring 2022.01.07

[스프링 시큐리티] 스프링 시큐리티 커스터마이징 - 인메모리 유저 추가

자동 설정 유저 정보는 UserDetailsServiceAutoConfiguration SecurityProperties 위의 클래스를 통해서 설정 된다. Properties에서 유저정보 설정하기 application.properties spring.security.user.name=admin spring.security.user.password=123 spring.security.user.roles=ADMIN 위와 같이 설정하면 어플리케이션 시작시 자동 설정되던 유저는 사라지고 위의 정보로 세팅된다. roles도 설정되었기 때문에 /admin 페이지도 접근 가능하다 SecurityConfig에 설정하기 @Configuration @EnableWebSecurity public class SecurityC..

스터디-Spring 2022.01.07

[스프링 시큐리티] 스프링 시큐리티 설정하기

스프링 웹 시큐리티 설정 추가 @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .mvcMatchers("/", "/info").permitAll() .mvcMatchers("/admin").hasRole("ADMIN") .anyRequest().authenticated() .and() .formLogin() .and() .httpBasic(); } } authorizeRequest() -어떻게 요청들을..

스터디-Spring 2022.01.07

[스프링 시큐리티] 스프링 시큐리티 연동

스프링 시큐리티 의존성 설정 pom.xml org.springframework.boot spring-boot-starter-security 스프링 시큐리티가 제공하는 자동 설정이 적용된다. 적용 전의 문제 인증할 방법이 없었다 현재 사용자가 누군지 알 수가 없다 자동 설정( 스프링 시큐리티 의존성을 추가하게 되면) 모든 요청은 인증을 필요로 한다 - 위와 같은 로그인 폼으로 리다이렉트 기본 유저가 생성된다 username: user password: 로그 확인 @GetMapping("/") public String index(Model model, Principal principal) { if (principal == null) { model.addAttribute("message", "Hello Spr..

스터디-Spring 2022.01.07