스프링시큐리티로 암호화하기
- 우선 메이븐에 다음과같은 dependency를 추가한다
<!--스프링시큐리티 web 라이브러리-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>4.1.0.RELEASE</version>
</dependency>
<!--스프링시큐리티 core 라이브러리-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>4.1.0.RELEASE</version>
</dependency>
<!--스프링시큐리티 config 라이브러리-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>4.1.0.RELEASE</version>
</dependency>
- spring폴더에 context-security.xml을 생성한다.
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">
<beans:bean id="bcryptPasswordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" />
</beans:beans>
- 스프링에서는 @Inject 어노테이션이있지만 전자정부프레임워크에서는 사용할수 없기때문에 @Autowired를 이용하여 의존성주입을 해준다.
@Autowired
private BCryptPasswordEncoder encoder;
- 의존성주입을 한 객체를 이용하여 회원가입할때의 받은 비밀번호를 다시 VO에 셋팅해준다
@RequestMapping(value = "registerSuccess.do")
public String registerSuccess(@ModelAttribute UserVO userVO,
HttpServletRequest res) throws Exception{
String encPassword = encoder.encode(userVO.getUserPw());
userVO.setUserPw(encPassword);
registerService.insertUser(userVO);
return "main/main.bookSpTiles";
}
-
그럼 디비에는 암호화된 비밀번호가 들어가게된다.
-
암호화된 비밀번호는 다시해독할 수 없으며 matches 메서드를이용하여 다음과같이 비교할수있다.
@Override
public EgovMap loginSuccess(String id, String pw) throws Exception {
EgovMap result = loginMapper.loginSuccess(id);
if(encoder.matches(pw, (String) result.getValue(1))){
return result;
}else {
return null;
}
}
이 글은 내친구 블로그 shj7242@github.io 에서 퍼온글이며 이 블로그에 이글뿐만아니라 다른글도 아주 자세히 설명이 되어있다.