티스토리 뷰
Password Encoder✓
Spring Security password Encoder
스프링 시큐리티 권장 PasswordEncoder
- PasswordEncoderFactories.createDelegationPasswordEncoder
- 기본 알고리즘 : bcrypt
패스워드 같은 중요한 정보는 암호화를 꼭 해줘야한다.
단방향 암호화를하면 좋다
해싱 알로리즘 & 솔트 (salt)
- 해싱은 말 그대로 유저가 입력한 비밀번호에 약간의 소금을 치는 것이다.
약간의 문자열을 추가하여 암호화를 한다.
실제 적용
Bean 등록
@Configuration
public class AppConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
}
User Save
private final PasswordEncoder passwordEncoder;
public void saveNewUser(SignUpForm signUpForm) {
User user = User.builder()
.email(signUpForm.getEmail())
.name(signUpForm.getName())
.password(passwordEncoder.encode(signUpForm.getPassword()))
.address(signUpForm.getAddress())
.birth(signUpForm.getBirth())
.phone(signUpForm.getPhone())
.status(UserStatusType.Pending)
.build();
accountRepository.save(user);
}
→ passwordEncode.encode() 실제 인코딩
{bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG
실제값을 확인해보면
이런식으로 앞에 {암호화방식} 이 붙어서 저장되게 된다.
Test Code
@DisplayName("회원가입 테스트 - 입력값 정상")
@Test
void signUpSubmit() throws Exception {
mockMvc.perform(post("/sign-up")
.param("email", "admin@mail.com")
.param("password", "password123")
.param("passwordChk", "password123")
.param("name", "관리자")
.param("address", "my address")
.param("birth", "20000101")
.param("phone", "01000000000")
.with(csrf()))
.andExpect(status().is3xxRedirection())
.andExpect(view().name("redirect:/"))
.andDo(print());
User user = userRepository.findByEmail("admin@mail.com");
assertNotNull(user);
assertNotEquals(user.getPassword(), "password123");
assertTrue(userRepository.existsByEmail("admin@mail.com"));
}
status().is3xxRedirection()
는 Redircet가 되었는지 확인할 수 있다.
assertNotNull()
을 이용하여 저장 되었음을 확인하고
assertNotEquals()
를 이용하여 회원가입 시 입력한 값과 실제 저장된(암호화된) 값과 다름을 확인하여 정상적으로 암호화가 되었음을 확인 해보았다.
'Dev > Spring' 카테고리의 다른 글
Spring Web Static Resources (0) | 2020.11.11 |
---|---|
Spring boot 프로젝트 만들기 (0) | 2020.10.21 |
Spring에서 RestTemplate로 API 호출하기 (0) | 2020.09.01 |
Spring boot @Formula사용해서 Count Query 하기 (2) | 2020.07.12 |
Spring Security 적용해보기 (0) | 2020.06.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- springboot
- boot
- java11
- Security
- Python
- JPA
- QueryDSL
- spring web
- 자바
- Spring
- 스프링부트 시작하기
- @formula
- ubuntu
- springsecurity
- ResourceHttpReqeustHandler
- 스프링
- 유사결과
- 웹서비스
- ControllerAdvice
- API
- 스프링부트
- booleanExpression
- like절
- 스프링시큐리티
- mapstruct
- FastAPI
- Java
- howtoinstallnginx
- 개발
- paawordencoder
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함