当前位置: 首页 > 知识库问答 >
问题:

如何使用Spring Security中的新PasswordEncoder

匡玉堂
2023-03-14

从Spring Security 3.1.4版本起,旧的org.springframework.Security.authentication.encoding.passwordencoder已被弃用,而改为org.springframework.Security.crypto.password.passwordencoder。由于我的应用程序还没有向公众发布,我决定转移到新的,而不是不推荐使用的API。

到目前为止,我有一个ReflectionSaltSource自动使用用户的注册日期作为每个用户的salt口令。

String encodedPassword = passwordEncoder.encodePassword(rawPassword, saltSource.getSalt(user));

在登录过程中,Spring还使用my bean适当验证用户是否可以登录。我无法在新的密码编码器中实现这一点,因为SHA-1-StandardPasswordEncoder的默认实现只能在编码器创建期间添加全局秘密盐。

有没有合理的方法如何设置它与非弃用的API?

共有1个答案

呼延庆
2023-03-14

如果您还没有用现有格式注册任何用户,那么您最好改用BCrypt密码编码器。

这就少了很多麻烦,因为你根本不用担心salt的问题--细节完全封装在编码器中。使用BCrypt比使用纯散列算法更强,它也是一种与使用其他语言的应用程序兼容的标准。

对于一个新的应用程序,真的没有理由选择任何其他选项。

 类似资料:
  • 本文向大家介绍如何使用SpringSecurity保护程序安全,包括了如何使用SpringSecurity保护程序安全的使用技巧和注意事项,需要的朋友参考一下 首先,引入依赖: 引入此依赖之后,你的web程序将拥有以下功能: 所有请求路径都需要认证 不需要特定的角色和权限 没有登录页面,使用HTTP基本身份认证 只有一个用户,名称为user 配置SpringSecurity springsecur

  • 我有一个Spring项目,它使用sping-oaust2和sping-Security使用LDAP身份验证提供程序进行身份验证。 在控制器中,我可以使用< code > @ AuthenticationPrincipal 注释访问当前主体的< code>UserDetails。 然而,当我使用client_credential令牌到达endpoint时,是一个,它是OAuth客户端id。sprin

  • 我正在学习springsecurity(基于java的配置),我无法使注销正常工作。当我点击注销时,我看到URL更改为http://localhost:8080/logout并获取“HTTP 404-/logout”。登录功能工作正常(即使使用自定义登录表单),但问题是注销,我怀疑重定向的url“localhost:8080/logout”应该类似于“localhost:8808/springte

  • 目前,我正在使用以下内容将用户登录到我的应用程序中。然而,我想使用一个角函数来实际执行登录。为此,我想创建一个Rest网络服务来进行身份验证,但是我在SO上看到的所有示例都使用我认为被贬低的用户。我还希望该服务返回有关用户的信息。 我要问的是如何将MyUserDetailsService更改为用作登录的restful服务,或者如何创建一个可用于登录的服务,该服务将在登录后返回用户对象。 这是我的a

  • 问题内容: 因为Spring Security 3.1.4.RELEASE的,旧的 已被废弃的青睐。由于我的应用程序尚未公开发布,因此我决定使用新的,不建议使用的API。 到目前为止,我有一个自动使用用户的注册日期作为按用户盐注册的密码。 在登录过程中,Spring还使用了我的bean来验证用户是否可以登录。我无法在新的密码编码器中实现此操作,因为SHA-1的默认实现- 仅具有添加全局密码的能力。

  • 问题内容: 迁移到Swift 2后,出现了一个错误,指出我现在应该使用@convention(c)(T)->U。我已经尝试了排列,但到目前为止还没有运气。 问题答案: 您不再需要在Swift 2中创建CFunctionPointer。相反,您可以通过调用Convention(在这种情况下为)来注释您的类型,并直接使用它。 The Swift Programming Language的Type At