gpt4 book ai didi

java - 如何使用 db spring 3.1 安全实现每个用户登录/注销的自定义 SHA-256 salt?

转载 作者:行者123 更新时间:2023-11-30 09:35:04 28 4
gpt4 key购买 nike

我正在阅读文档 Spring 3.1 security documentation广泛,但我找不到所有问题的答案。

在基于表单登录(用户 + 密码)的 spring web 应用程序中,我想使用 SHA-256 对用户密码进行加盐,为每个用户使用随机加盐。这意味着我必须在我的数据库中为每个用户保存盐和散列密码。到目前为止没有问题。

  1. 显然我必须实现自己的 UserDetailsS​​ervice 以从我的数据库中获取我的用户信息并在我的 spring-security.xml 中配置它。

  2. 看来我必须在我的 UserDetails 实现之上添加一个额外的 getSalt() 方法,以便在检查提供的登录时使其可用由用户针对存储的散列密码。

那么情况就变得不明朗了。我应该拦截登录请求。从 6.4.3 节看来,Spring 似乎会将用户提交的凭据映射到 Authentication 对象,并将其提交给 AuthenticationManager

我的问题是:

i) Spring 将向 AuthenticationManager 提交什么 Authentication 的实现?如何找回用户名和密码?

ii) 看来我必须实现自己的 AuthenticationManager。在每次调用 authenticate(...) 时,我都会获取登录名和密码,并从数据库中获取 UserDetails。然后,将提供的 pwd 与相应的 salt 进行散列,并与数据库散列项进行比较。正确吗?

iii) AuthenticationManager API 也有一个supports(...) 方法。应该如何实现?

iv)AuthenticationAuthenticationManager应该如何配置?

最佳答案

我一定没有正确阅读你的问题,但 Spring Security 提供开箱即用的加盐密码:

http://static.springsource.org/spring-security/site/docs/3.1.x/reference/core-services.html#d0e3021

如果 8 位盐不够,您可以将自己的 SaltSource 注入(inject) DaoAuthenticationProvider。该手册实际上强烈建议这样做。

关于java - 如何使用 db spring 3.1 安全实现每个用户登录/注销的自定义 SHA-256 salt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11544587/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com