[SPRING] 스프링 보안 3으로 해싱 및 솔팅 암호
SPRING스프링 보안 3으로 해싱 및 솔팅 암호
어떻게 해시 비밀번호를 해싱하고 스프링 시큐리티 3으로 해칠 수 있습니까?
해결법
-
==============================
1.프로그래밍 방식으로 다음과 같이 할 수 있습니다.
프로그래밍 방식으로 다음과 같이 할 수 있습니다.
application-context.xml (web.xml의 contextConfigLocation에 정의되어 있음) 파일에서 bean을 정의합니다 (이 예에서는 md5를 사용함).
<bean class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" id="passwordEncoder" />
그런 다음 비밀번호 인코더를 Autowire합니다.
@Autowired PasswordEncoder passwordEncoder;
당신의 방법이나 해시하고 소금을 피우고 싶을 때.
passwordEncoder.encodePassword("MyPasswordAsString", "mySaltAsStringOrObject");
위의 호출은 String으로 해시 된 해시를 반환해야합니다.
그렇게해야합니다. 당신이 필요로 할 항아리를 알아낼 수 있다고 가정합니다.
최신 정보
MD5를 사용하는 것이 최선의 방법은 아니라는 것은 말할 필요도 없습니다. 적어도 SHA-256을 사용해야 이상적입니다. 이 작업은 ShaPasswordEncoder를 사용하여 수행 할 수 있습니다.
위의 MD5 빈 설정을 다음으로 대체하십시오.
<bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder"> <constructor-arg value="256"/> </bean>
-
==============================
2.가장 단순한 것은 Spring Security 3.1이 해싱 방법에 제약을 가하지 않는다고 가정하는 것 같습니다 :
가장 단순한 것은 Spring Security 3.1이 해싱 방법에 제약을 가하지 않는다고 가정하는 것 같습니다 :
<bean id="encoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/> <security:authentication-manager> <security:authentication-provider> <security:password-encoder ref="encoder"/> <security:jdbc-user-service data-source-ref="dataSource" users-by-username-query="select username,password, enabled from users where username=?" authorities-by-username-query="select u.username, ur.authority from users u, user_roles ur where u.username = ur.username and u.username =?"/> </security:authentication-provider> </security:authentication-manager> @Controller @Stateless public class UsersEJB { @PersistenceContext(unitName = "somePU") private EntityManager em; @Transactional public void create(Users users) { PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); String hashedPassword = passwordEncoder.encode(users.getPassword()); users.setPassword(hashedPassword); em.persist(users); } }
-
==============================
3.문서화 된대로 가장 쉬운 방법 :
문서화 된대로 가장 쉬운 방법 :
<authentication-manager alias="authenticationManager"> <authentication-provider user-service-ref="userDetailsService" > <password-encoder hash="sha"> <salt-source user-property="username"/> </password-encoder> </authentication-provider> </authentication-manager>
HTH
from https://stackoverflow.com/questions/7378107/hashing-and-salting-passwords-with-spring-security-3 by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 런타임시 스프링 관리 Bean을 인스턴스화하는 방법은 무엇입니까? (0) | 2019.01.30 |
---|---|
[SPRING] 스프링 스케줄러 종료 오류 (0) | 2019.01.30 |
[SPRING] 단일 빈에서 사용하기 위해 여러 파일에서 스프링 특성을 수집하는 방법 (0) | 2019.01.30 |
[SPRING] JPA와 함께 Spring Security 사용 (0) | 2019.01.30 |
[SPRING] 스프링 보안 oauth2 및 양식 로그인 구성 (0) | 2019.01.30 |