ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring - security 암호화 하기
    Spring 2019. 2. 26. 23:50

    스프링에서는 spring-security의 BCryptPasswordEncoder 를 이용하여 암호화를 할 수 있다.

    설정하기

    1. 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에 대한 라이브러리를 등록한다.

    1. 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>
    1. 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 가 나오는 것을 확인할 수 있다.

    반응형

    댓글

Designed by Tistory.