新版Spring Security6.2 - Digest Authentication

前言:

书接上文,上次翻译basic的这页,这次翻译Digest Authentication这页

摘要认证-Digest Authentication

官网的警告提示:不应在应用程序中使用摘要式身份验证,因为它不被认为是安全的。最明显的问题是您必须以明文或加密或 MD5 格式存储密码。所有这些存储格式都被认为是不安全的。相反,您应该使用单向自适应密码散列(bCrypt、PBKDF2、SCrypt等)来存储凭证,摘要身份验证不支持这种方式。

摘要身份验证试图解决基本身份验证的许多弱点,特别是通过确保凭证永远不会以明文形式通过网络发送。许多浏览器都支持摘要身份验证。
管理HTTP摘要身份验证的标准由RFC 2617定义,它更新了RFC 2069规定的摘要身份验证标准的早期版本。大多数用户代理实现RFC 2617。Spring Security Digest认证支持与RFC 2617规定的认证质量保护(qop)兼容,并提供与RFC 2069的向后兼容。如果您需要使用未加密的HTTP(没有TLS或HTTPS)并希望最大限度地提高身份验证过程的安全性,那么摘要身份验证被视为更有吸引力的选择。但是,每个人都应该使用HTTPS。

摘要式身份验证的核心是“nonce-随机数”。这是服务器生成的值。Spring Security 的 nonce 采用以下格式:

base64(expirationTime + ":" + md5Hex(expirationTime + ":" + key))
expirationTime:   The date and time when the nonce expires, expressed in milliseconds
key:              A private key to prevent modification of the nonce token

请确保使用NoOpPasswordEncoder配置了不安全的明文密码存储。(参见Javadoc中的NoOpPasswordEncoder类。)下面提供了一个使用Java Configuration配置摘要身份验证的示例

@Autowired
UserDetailsService userDetailsService;

DigestAuthenticationEntryPoint entryPoint() {
	DigestAuthenticationEntryPoint result = new DigestAuthenticationEntryPoint();
	result.setRealmName("My App Realm");
	result.setKey("3028472b-da34-4501-bfd8-a355c42bdf92");
}

DigestAuthenticationFilter digestAuthenticationFilter() {
	DigestAuthenticationFilter result = new DigestAuthenticationFilter();
	result.setUserDetailsService(userDetailsService);
	result.setAuthenticationEntryPoint(entryPoint());
}

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
	http
		// ...
		.exceptionHandling(e -> e.authenticationEntryPoint(authenticationEntryPoint()))
		.addFilterBefore(digestFilter());
	return http.build();
}

配置方面:

官网给的配置总体是按照之前总体架构,当然上面配置不完整的,甚至说有点问题,后续再补上完整例子。

参考文献

《spring boot官网》

相关推荐

  1. SpringSecurity

    2023-12-15 04:46:06       20 阅读
  2. SpringSecurity】2. 初学SpringSecurity

    2023-12-15 04:46:06       30 阅读
  3. SpringBoot-SpringSecurity

    2023-12-15 04:46:06       35 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 04:46:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 04:46:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 04:46:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 04:46:06       18 阅读

热门阅读

  1. Vue3后台管理-项目总结

    2023-12-15 04:46:06       42 阅读
  2. vue3制作类微信的六位的密码输入框

    2023-12-15 04:46:06       29 阅读
  3. B - Team Gym - 102801B ( 网络流问题)

    2023-12-15 04:46:06       39 阅读
  4. 在浏览器中存储数组和对象(js的问题)

    2023-12-15 04:46:06       36 阅读
  5. centos7配置国内源

    2023-12-15 04:46:06       35 阅读
  6. Python基础List列表定义与函数

    2023-12-15 04:46:06       41 阅读
  7. 【Python】正则表达式

    2023-12-15 04:46:06       35 阅读
  8. 在MFC(Microsoft Foundation Classes)中 CreateThread函数

    2023-12-15 04:46:06       33 阅读
  9. CSS BFC详解

    2023-12-15 04:46:06       37 阅读
  10. C#教程(二):继承

    2023-12-15 04:46:06       34 阅读
  11. Kotlin 中的 `as` 关键字:类型转换的艺术

    2023-12-15 04:46:06       35 阅读