当前位置: 首页 > 面试题库 >

Spring安全-BcryptPasswordEncoder

罗波鸿
2023-03-14
问题内容

我在我们的应用程序中使用Spring安全性,并希望使用存储在数据库中的更改密码选项的密码来验证用户输入。

密码如下存储在DB中。

user.setPassword(new BCryptPasswordEncoder().encode("<userPassword>"));

在此,用户输入的密码使用上述逻辑进行编码并存储在DB中。现在,我只是想从用户那里获取更改密码的密码。从用户那里获得密码后,我使用上述逻辑进行编码,然后尝试与数据库进行比较。即使我使用相同的逻辑进行编码,编码后的值似乎也有所不同。

我的配置来自WebSecurityConfig

@Autowired
public void configAuthentication(final AuthenticationManagerBuilder auth) throws Exception {

    auth.userDetailsService(userDetailsService).passwordEncoder(new BCryptPasswordEncoder());

}

我不确定比较有什么问题。


问题答案:

即使我使用相同的逻辑进行编码,编码后的值似乎也有所不同。

Bcrypt算法使用的内置盐值每次都不同。因此,是的,即使对于相同的 Clear Text, 相同的编码过程也会生成不同的 Cipher Text

从用户那里获得密码后,我使用上述逻辑进行编码,然后尝试与数据库进行比较

不要编码 原始密码
。假设rawPassword是客户端提供给您的密码,并且encodedPassword是数据库中已编码的存储密码。然后,不要使用来编码rawPassword和比较结果,而是String#equals使用PasswordEncoder#matches方法:

PasswordEncoder passwordEnocder = new BCryptPasswordEncoder();
if (passwordEncoder.matches(rawPassword, encodedPassword)) {
    System.out.println("Matched!");
}


 类似资料:
  • 客户端需要LDAP和本地JDBC身份验证机制。 它们需要一种对两组用户都通用的授权机制。 应该根据用户的角色限制用户进入某些页面。以及需要应用于每个用户的单独权限(创建、更新、删除)集 那么,我如何实现按页授权,这将由管理员决定谁(哪个角色)可以访问哪个页面? 是否应该在配置中指定每个角色页组合?是否有任何方法可以动态地改变页面和角色,因为角色可能会在以后添加。

  • 当我使用security.basic.enabled=false在具有以下依赖项的Spring Boot项目上禁用安全性时: 为了修复此异常,我必须添加属性-management.security.enabled=false。我的理解是,当执行器在类路径中时,应该将security.basic.enabled=false和management.security.enabled=false设置为禁用

  • 我试图在我的资源服务器上配置Swagger身份验证,以便我可以根据我的授权服务器进行身份验证。 我将资源服务器和授权服务器分开。它们都使用不同的端口在我的本地主机上启动。 端口8083上的资源服务器 每当我试图“授权”时,就会出现CORS问题。 我从另一个网站分叉了一个项目作为我的测试场地。下面是分叉项目。 https://github.com/cbriarnold/oauth2-spring-b

  • 问题陈述:我有一些Rest的API,它们使用Spring安全性进行CSRF保护。此外,这些API将通过Angular WEB UI从不同的Origin/domain访问。我不需要Spring Authentication,因为身份验证由Siteminder处理。 方法:我遵循了Dave Syer提供的CSRF保护的链接:登录页面:Angular JS和Spring Security Part II

  • 因此,我正在尝试保护我使用Spring mvc和安全构建的Web应用程序。我目前拥有来自正常自定义登录页面的基本用户名和密码,该页面使用自定义身份验证提供程序工作,以提供针对数据库进行验证的填充身份验证对象。我想知道的是如何实现使用TOTP的第二阶段登录?我可以让TOTP发布和验证工作,但不确定如何修改Spring Security以通过在我指定的登录页面以外的页面上提交令牌的表单来接受对授权的更

  • 因此,作为一个初学者,我曾尝试使用spring boot 2.2.11、spring security、thymeleaf和json web令牌创建一个ecommmerce网站,我的问题是,当用户对模板进行身份验证时,即使我在模板中放置了thymeleaf的isAnonyms和IsAuthentificated标记,模板也没有更改。 我有两个问题: 1-/如何告诉所有控制器用户已经登录? 2-/如