본문 바로가기

Java/spring19

spring security를 알아보자 - 7 ㅇ PasswordEncoder의 역할을 알아보자. 데이터베이스에는 비밀번호가 절때로 그냥 문자열로 저장되면 로그에서나, 다른부분에서 유출이 발생할 수 있어서, 절대 그렇게 저장해서는 안된다. DB에 항상 저장할땐 비밀번호를 인코딩해서 저장을 해야한다. Spring security 프레임워크 내에 어디서 비밀번호 검증이 일어날까? DaoAuthenticationProvider에서 실질적인 검증이 일어난다. authenticate() 에서 유저정보를 불러오고, PreAuthenticationCheck에서 만료되었는지 검증하고, additionalAuthenticationChecks() 에서 인증객체를 받고 거기에 입력받은 비밀번호정보를 PsswordEncoder.matches() 로 인코딩한 입력받은 비밀.. 2024. 3. 26.
spring security를 알아보자 - 6 Jpa를 사용해보자. Customer 엔티티와, CustomerRepository를 만들어주자. CustomerRepository는 CrudRepository를 extends한다. @Repository public interface CustomerRepository extends CrudRepository { } 에서 Customer는 어느테이블에 속하는 리포지토리인지, Long은 PrimaryKey의 타입을 적어준것이다. 그리고 레포지토리나 엔티티가 메인 애플리케이션 밖에 존재한다면 @EnableJpaRepositories, @EntityScan를 붙혀준다. 하지만 나는 안에 존재하기때문에 알아서 적용된다. 이제 loadUserByUsername을 사용하기위해 UserDetailsService를 imp.. 2024. 3. 25.
spring security를 알아보자 - 5 UserDetailsManager를 구현하는클래스를 알아보자. ㅇ InMemoryUserDetailsManager public void createUser(UserDetails user) { Assert.isTrue(!this.userExists(user.getUsername()), "user should not exist"); this.users.put(user.getUsername().toLowerCase(), new MutableUser(user)); } public void deleteUser(String username) { this.users.remove(username.toLowerCase()); } public void updateUser(UserDetails user) { Assert.i.. 2024. 3. 21.
spring security를 알아보자 - 4 여태까진 application.properties 에서 한명의 유저만 설정했기때문에 추가적인 유저를 만들수 있게 향상해야한다. 애플리케이션 메모리안에 다수의 유저를만들게 해보자. ㅇ 인메모리상 유저를 생성하자 웹애플리케이션 메모리 내에 유저를 생성하자. **이방법은 깃헙으로 볼수있기때문에 안전한 방법은 아님. ProjectSecurityConfig에 @Bean public InMemoryUserDetailsManager userDetailsService() { UserDetails admin = User.withDefaultPasswordEncoder() .username("admin") .password("12345") .authorities("admin") .build(); UserDetails us.. 2024. 3. 18.