본문 바로가기

Language/Java, Android

[스프링] 비밀번호 암호화 (bcrypt)

1. pom.xml에 스프링 시큐리티 추가


<dependency>

    <groupId>org.springframework.security</groupId>

    <artifactId>spring-security-web</artifactId>

    <version>4.2.1.RELEASE</version>

</dependency>

<dependency>

    <groupId>org.springframework.security</groupId>

    <artifactId>spring-security-core</artifactId>

    <version>4.2.1.RELEASE</version>

</dependency>

<dependency>

    <groupId>org.springframework.security</groupId>

    <artifactId>spring-security-config</artifactId>

    <version>4.2.1.RELEASE</version>

</dependency>



* 스프링 버전이랑 맞춰주기 (소수점까지 말고 제일 앞 숫자만)


2. spring-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>


(네임스페이스에서 bcrypt 체크)



3. web.xml에 spring-security.xml 추가


<context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

        /WEB-INF/spring/root-context.xml

        /WEB-INF/spring/spring-security.xml

    </param-value>

  </context-param>


4. 암호화 하려는 controller나 service에서 


@Autowired

BCryptPasswordEncoder passwordEncoder;


"추가!"


boolean 변수 = this.passwordEncoder.matches( 사용자가 입력한 값, 디비에 담긴 값);


변수가 true 일 때,


로그인 성공 시키면 된닷!



* 이 방식으로 사용할 때, 로그인을 체크하는 쿼리에서는 id 값만 where 절로 찾아서 count(*) 계산! (1개가 나와야겠죠?)

matches()에 담는 디비에 담긴 값을 가져올 때 select 패스워드 from 테이블명 where id만




이 방법은 나중에 이메일로 회원가입 인증을 할 때, 토큰을 URI에 담아서 보내거나 할 때 활용할 수 있다. 이때는 이메일값만 인코드(암호화)해서 보내면 된다!

@를 포함한 인코드는 character에 담기지 않으니 주의 => @ 이 .(마침표)로 인코드 된다.

'Language > Java, Android' 카테고리의 다른 글

[스프링] 한글깨짐 web.xml 필터  (0) 2018.02.20
[TOMCAT] 서버 리부트시 자동 실행  (0) 2018.02.02
Scanner 메소드 (대표적인 입력값받기)  (0) 2018.01.03
함수  (0) 2018.01.03
배열  (0) 2018.01.02