1. Spring Securiy 의존성 주입
gradle에 spring-security를 추가한다.
[build.gradle]
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-security'
}
2. config 설정
@Configuration : 설정파일이라는 것을 알려주는 어노테이션
@Bean : 빈으로 등록하는 어노테이션 (return 타입이 주입됨)
@Configuration
public class SecurityConfig {
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
3. 암호화하기
String encode(CharSequence rawPassword)
class PasswordEncoderTest {
@Autowired
PasswordEncoder passwordEncoder;
public void passwordEncoder {
String originPassword = "1234";
String encodedPassword = passwordEncoder.encode(originPassword);
System.out.println(encodedPassword);
}
}
결과
$2a$10$u1uN2nOehZ9chk4VU4rTB.a4sbWeKD5WGgoefPcTfe6HBjySa4Ab.
4. 로그인 시 입력하는 비밀번호와 맞는지 확인하기
class PasswordEncoderTest {
@Autowired
PasswordEncoder passwordEncoder;
public void passwordEncoder {
String encodedPassword1 = passwordEncoder.encode("1234");
String encodedPassword2 = passwordEncoder.encode("1234");
System.out.println(encodedPassword1);
System.out.println(encodedPassword2);
}
}
결과
$2a$10$VXIddKgmJdrrB0pGFE6kmuPEC2S/zdVqdczqbsY9jiEELW0W8xhoi
$2a$10$FC.QNUevmqhyHyBK7EdOWO3S0qbbULhNzBb7LIb8lCi/23jxl9Yzu
같은 비밀번호 1234를 암호화했지만 결과는 다르게 나오는 걸 확인할 수 있다.
그러면 저장해놓은 암호화한 비밀번호와 로그인 시 입력한 비밀번호를 어떻게 비교할 수 있을까?
❗ PasswordEncoder의 matches() 함수를 쓰면 확인해볼 수 있다.
boolean matches(CharSequence rawPassword, String encodedPassword)
class PasswordEncoderTest {
public void login(String inputPassword) {
String dbPassword = "$2a$10$u1uN2nOehZ9chk4VU4rTB.a4sbWeKD5WGgoefPcTfe6HBjySa4Ab.";
boolean matchResult = passwordEncoder.matches(inputPassword, dbPassword);
System.out.println(matchResult); // 결과 : true
}
}
📍dbPassword는 db에 저장되어 있는 비밀번호를 가져오면된다.
[출처]
'프로젝트' 카테고리의 다른 글
| [SuiteCare/Java] 공공데이터 포털에서 받은 XML을 JSON으로 변환하기 (0) | 2024.05.02 |
|---|---|
| [SuiteCare] 공공데이터 포털에 OPEN API 요청하기 (0) | 2024.04.27 |
| [SuiteCare] MySQL 다른 테이블에서 데이터 가져와서 insert하기 (0) | 2024.04.15 |
| [SuiteCare] MySQL에서 일정 시간 후 자동으로 데이터 업데이트하기 (0) | 2024.04.09 |
| [SuiteCare] Spring Boot 파일 용량 제한 설정하기 (1) | 2024.04.02 |