簡體   English   中英

使用Spring Security 3哈希和腌制密碼

[英]Hashing and Salting Passwords with Spring Security 3

如何使用Spring Security 3散列密碼並加密它們?

程序化的,你可以這樣做:

在application-context.xml(在contextConfigLocation下的web.xml中定義)文件中定義bean(此示例使用md5 )。

<bean class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" id="passwordEncoder" />

然后自動設置密碼編碼器:

@Autowired
PasswordEncoder passwordEncoder;

在您的方法中或您想要哈希和鹽的任何地方。

passwordEncoder.encodePassword("MyPasswordAsString", "mySaltAsStringOrObject");

上面的調用應該返回一個salted哈希(作為String )。

應該這樣做。 我假設你可以找出你需要的罐子。

UPDATE

不言而喻,使用MD5並不是最好的主意。 理想情況下,您應該至少使用SHA-256。 這可以使用ShaPasswordEncoder完成。

將上面的MD5 bean配置替換為:

<bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
     <constructor-arg value="256"/>
</bean>

最簡單的似乎是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);
    }
}

最簡單的方法,如記錄

<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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM