728x90
반응형
1. 서론
- 회원가입 로직을 구현하던 중 평문 비밀번호를 그대로 저장하는 것을 알게 되었고, Spring security 를 이용하여 암호화하는 방법을 학습해야겠다고 생각했다.
2. 본론
의외로 간단하다. spring-security 의존성이 필요하다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
그리고 springsecurity 환경설정을 진행해준다.
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
@EnableWebSecurity
public class SpringSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.cors().disable()
.headers().frameOptions().disable();
}
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
passwordEncoder를 빈으로 등록해주면, 어디에서든 @Autowired 어노테이션을 이용해서 가져올 수 있다.
이제 서비스 부분에 적용해보자
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
@Service
public class MemberService {
@Autowired
private MemberRepository memberRepository;
@Autowired
private PasswordEncoder passwordEncoder;
@Transactional
public void signUpUser(Member member) {
member.setPassword(passwordEncoder.encode(member.getPassword()));
memberRepository.save(member);
}
}
평문으로 된 비밀번호를 가져와서 passwordEncoder 내장함수인 encode로 해싱한 후 저장해주었다.
3. 결론
암호화가 잘 되었다.
728x90
반응형
'Dev > SpringBoot' 카테고리의 다른 글
23. [SpringBoot] RESTFul한 로그인 구현 예제 (0) | 2020.10.05 |
---|---|
22. [SpringBoot] 스프링부트 spring security 완전 기초 예제 (0) | 2020.10.04 |
20. [SpringBoot] 버전 걱정 없는 SSO 구현 번역해보기 - 2 (3) | 2020.09.22 |
19. [SpringBoot] 버전 걱정 없는 SSO 구현 번역해보기 - 1 (0) | 2020.09.21 |
18. [SpringBoot] 환경설정별로 다르게 실행해보자 (0) | 2020.09.09 |