-
Spring - security 암호화 하기Spring 2019. 2. 26. 23:50
스프링에서는 spring-security의 BCryptPasswordEncoder 를 이용하여 암호화를 할 수 있다.
설정하기
- pom.xml
<!-- 스프링 시큐리티등록 --> <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${org.springframework-version}</version> </dependency>
pom.xml 에 spring-security에 대한 라이브러리를 등록한다.
- security-context.xml 생성
appServlet 폴더 밑에 security-context.xml 파일을 생성한다. (new -> Spring Bean Configuration file)
생성할 때 namespace는 beans 와 security 를 선택한다.아래와 같이 BCryptPasswordEncoder bean을 등록한다.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:security="http://www.springframework.org/schema/security" 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-5.0.xsd"> <bean id="bcryptPasswordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/> </beans>
- web.xml 에 security-context.xml 등록
web.xml 에 security-context.xml 을 추가한다.
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/root-context.xml /WEB-INF/spring/appServlet/security-context.xml </param-value> </context-param>
사용하기
@Autowired BCryptPasswordEncoder cryptEncoder; @RequestMapping("/crypt") public void cryptTest() { String pw = "1234"; String pwCrypt = cryptEncoder.encode(pw); System.out.println("비밀번호 : " + pw); System.out.println("암호화 후 : " + pwCrypt); }
결과
여러번 실행한 결과이다. 암호화를 하면 매번 값이 달라지기 때문에
비밀번호와 암호화 된 값을 비교하는 방법은 BCryptPasswordEncoder의matches(비밀번호, 암호화된 값)
를 이용한다.System.out.println(cryptEncoder.matches(pw, pwCrypt));
위의 코드에 넣어서 확인해보면
결과 값으로 true 가 나오는 것을 확인할 수 있다.반응형'Spring' 카테고리의 다른 글
spring - 문자 인증 시스템 만들기 (0) 2019.03.17 Spring - db(오라클) 설정 properties 파일 이용하기 (0) 2019.02.28 Spring - 트랜잭션 처리하기 (0) 2019.02.25 Spring - 파일 다운로드 하기 (0) 2019.02.25 Spring - 파일 업로드 하기 (0) 2019.02.23