복붙노트

[SPRING] 스프링 보안 3으로 해싱 및 솔팅 암호

SPRING

스프링 보안 3으로 해싱 및 솔팅 암호

어떻게 해시 비밀번호를 해싱하고 스프링 시큐리티 3으로 해칠 수 있습니까?

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    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

  4. from https://stackoverflow.com/questions/7378107/hashing-and-salting-passwords-with-spring-security-3 by cc-by-sa and MIT license