반응형

스프링 시큐리티를 사용하여 비밀번호를 암호화 하는 방법을 알아보겠습니다. 


스프링 시큐리티를 찾아본 결과 설정하는 방법도 여러가지 있습니다.


여기서는 단순하게 bcrypt 방식으로 비밀번호만을 암호화 하는 방법입니다. 


전체적인 설정을 하시려면 다른 글을 참조하시는게 좋습니다.


1. 메이븐 pom.xml 에 스프링 시큐리티를 아래와 같이 추가합니다.

스프링 버전은 4.3.0.RELEASE 를 사용해주며, 스프링과 같은 스프링시큐리티 4.x 버전을 선택했습니다.

(스프링과 버전이 다르면 에러가 난다고 알고있습니다.)




2. spring-security.xml 파일을 생성합니다.

경로는 WEB-INF/spring/spring-security.xml 이며, 아래와 같은 소스로 작성을합니다.

여기서는 단순히 비밀번호만을 암호화 하기 때문에 아래와 같이 간단합니다. 




3. web.xml 에 spring-security.xml 을 추가합니다.

root-context.xml 아래에 추가했습니다. 



4.1 스프링 시큐리티 암호화 

암호화를 하려는 controller 혹은 service에서 


소스에 아래와같은 @Autowired를 추가하고, 



아래와 같은 방식으로 비밀번호를 암호화 하여, DB에 저장하면 됩니다.

여러번 실행해보면 알겠지만, 실행할때마다 암호화된 값이 다르게 나옵니다. 




4.2 스프링 시큐리티 암호화 비교

위에서 비밀번호를 암호화해서 DB에 저장을 했다면, 로그인을 할때 비교를 해야한다.

새로 암호화를 해서 DB에 저장된 값과 비교를 하면 동일한 비밀번호를 입력했지만, 암호화된 값이 다르기 때문에 비교가 불가하다.

그렇기 때문에 matches라는 메서드를 사용하여, 입력된 비밀번호와 DB에 저장된 값을 비교 할 수있다.



여기서는 암호화된 비밀번호를 DB에 저장하고, 불러오는 부분은 생략했습니다. 

일반적으로 select문을 통해 id와 pw가 일치하는 계정의 정보를 받아오는 방식하고는 다르지만,

간단하게 spring security를 사용하기 위한 방법이었습니다.



반응형

+ Recent posts