16

パスワードをハッシュしてSpringSecurity3でソルトするにはどうすればよいですか?

4

3 に答える 3

21

プログラム的に-あなたは次のようにそれを行います:

application-context.xml(web.xmlのcontextConfigLocation)ファイルでBeanを定義します(この例ではmd5)を使用します。

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

次に、パスワードエンコーダーを自動配線します。

@Autowired
PasswordEncoder passwordEncoder;

あなたの方法で、またはあなたがハッシュして塩漬けにしたいところならどこでも。

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

上記の呼び出しは、ソルトされたハッシュを(としてString)返す必要があります。

それはそれをする必要があります。私はあなたがあなたが必要とする瓶を理解することができると仮定しています。

アップデート

言うまでもなく、MD5を使用するのは最善の方法ではありません。理想的には、少なくともSHA-256を使用する必要があります。これは、を使用して実行できますShaPasswordEncoder

上記のMD5Bean構成を次のように置き換えます。

<bean id="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder">
     <constructor-arg value="256"/>
</bean>
于 2011-09-11T17:52:57.103 に答える
8

最も単純なのは、ハッシュの実行方法に制約がないと仮定した場合のSpringSecurity3.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);
    }
}
于 2013-03-21T17:17:57.283 に答える
6

文書化されているように、最も簡単な方法:

<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

于 2012-08-14T13:52:31.987 に答える