【发布时间】:2020-08-09 10:39:47
【问题描述】:
一些客户/客户会通过用户管理系统将网络应用程序用于离线大规模用途。在这方面,它们为部署具有 HTTPS 支持的应用程序提供了真正的痛苦。让客户抱怨的浏览器对自签名证书发出的 UN-trust 警告别管了。
- 在这个用例中,为了争论。通过 HTTP 使用安全用户身份验证的选项有哪些?
我一直在尝试使用 Spring Security 和 Spring Boot 来使用基本身份验证保护无状态 API,但我想控制 base64 标头加密/解密,避免以非常容易解密的 base64 字符串发送凭据。
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf()
.disable()
.cors()
.and()
.authorizeRequests()
.antMatchers("/login")
.permitAll()
.and()
.httpBasic();
}
此方法配置扩展WebSecurityConfigurerAdapter。我试图查看BasicAuthenticationFilter 的源代码,发现它使用BasicAuthenticationConverter 创建新对象,所以我无法提供自定义转换器作为bean 来控制base64 解密与更强大的替代(或额外一)。
这也违反了基本身份验证标准。 Digest Auth 将密码存储为文本,这对我来说不是一个选项。
所以,
有没有办法使用带有 HTTP 的 Basic Auth 来控制 base64 解密,试图达到 HTTPS 提供的功能?
或者使用 Digest Auth 和加密的存储密码?
【问题讨论】:
标签: java spring-boot spring-security basic-authentication digest-authentication