전자정부프레임워크에서 스프링 시큐리티 사용하기

egov

스프링시큐리티로 암호화하기

  1. 우선 메이븐에 다음과같은 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>

  1. 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>

  1. 스프링에서는 @Inject 어노테이션이있지만 전자정부프레임워크에서는 사용할수 없기때문에 @Autowired를 이용하여 의존성주입을 해준다.

    @Autowired
	private BCryptPasswordEncoder encoder;

  1. 의존성주입을 한 객체를 이용하여 회원가입할때의 받은 비밀번호를 다시 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";
	}
	
    
  1. 그럼 디비에는 암호화된 비밀번호가 들어가게된다.

  2. 암호화된 비밀번호는 다시해독할 수 없으며 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 에서 퍼온글이며 이 블로그에 이글뿐만아니라 다른글도 아주 자세히 설명이 되어있다.

효준's profile image

효준

2018-01-16 21:58

다른글 보러가기

c:forEach문 에서 변수 두개사용하기

이전 포스트

전자정부프레임워크에서 이메일 인증하기

다음 포스트