34.비밀번호 인코딩1
비밀 번호 인코딩하기
순서
1.BcryptPasswordEncoder란?
2.메서드
3.비밀번호 인코딩 해보기
- 회원가입
- 로그인
- 비밀번호 찾기
1.BcryptPasswordEncoder란?
단방향 암호화
Spring Security 프레임 워크에서 제공하는 클래스로 비밀번호를 암호화 하는데 사용한다(해시)
BCrpt는 같은 비밀번호를 암호화 하더라도 해시값은 다른 값으로 도출 된다 .
+) 스프링 시큐리티?
자바 서버 개발을 위해 필요로 한 인증,권한, 부여 및 기타 기능을 제공하는 프레임워크이다.
2.메소드
메소드는 부모클래스인 object의 메소드를 제외하고 총 3개가 있다.
- java.lang.String encode(java.lang.CharSequence rawPassword)
원시 암호를 인코딩 합니다.
패스워드를 암호화 시켜주는 메소드 입니다. 8바이트 이상의 무작위로 생성된 솔트와 결합된 SHA-1 이상의 해시를 적용 한다.
매개변수로 CharSequence타입의 데이터를 넣어주면 String 타입등 으로 반환을 해준다.
매번 다른 결과가 나온다.
- boolean matches(java.lang.CharSequence rawPassword, java.lang.String encodedPassword)
저장소에서 얻은 인코딩된 암호화와 인코딩된 후 제출된 원시 암호화가 일치하는지 확인을 한다.
- default boolean upgradeEncoding(java.lang.String encodedPassword)
인코딩 된 패스워드가 안전한지 파악하는 함수이다.
더 나은 보안을 위해 인코딩 된 암호를 다시 인코딩 해야 하는 경우 true, 그렇지 않으면 false를 반환한다.
3.비밀번호 인코딩 해보기
-pom.xml
<!-- 시큐리티 -->
<!-- security -->
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-core -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.4.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.4.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.4.2</version>
</dependency>
pom.xml에 시큐리티 디펜던시를 설정을 해준다.
security는 스프링 버전 5.2.9이상 되야한다.
pom.xml에 Security를 설정 하였으면 security-context.xml를 생성 하고 수정한다.
Spring/appServlet/sercurity-context.xml
<?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/security http://www.springframework.org/schema/security/spring-security.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
‘Spirng Bean Configuration File’을 통해 Namespaces에 sercurity를 설정해주고 버전이 설정되지 않는 것을 선택 해준다.
<bean id="bcryptPasswordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"></bean>
생성한 파일에 BCryptPasswordEncoder를 빈으로 등록하기 위해 코드를 설정한다.
댓글남기기