当明文密码未存储在 Web 服务生产者上时,PasswordDigest 的替代方案是什么?

问题描述 投票:0回答:1

场景:

Web 服务生产者仅在数据库中存储密码的 SHA-1 哈希值。我们需要使用用户名/密码组合来验证 Web 服务用户。


Web 服务安全 UsernameToken 配置文件 允许我们为此目的添加肥皂标头:

该元素是 WSS 中引入:SOAP 消息 安全文件作为一种方式 提供用户名。

在元素内,a 元素可能是 指定的。密码类型 密码文本和密码摘要是 不限于实际密码, 虽然这是一个常见的情况。 (146-151)

PasswordText 密码类型意味着密码以纯文本形式通过网络发送,如果我们不使用传输级别安全机制,这将是一个安全问题。 PasswordDigest 避免发送纯文本密码并发送哈希值。但为了避免重放攻击(即攻击者使用窃听来捕获散列密码并通过另一个请求重新发送),PasswordDigest 在计算散列之前向密码添加时间戳和随机数。此添加会导致以下限制:

请注意,PasswordDigest 只能 如果使用纯文本密码(或 密码等效)可用 向请求者和请求者双方 接受者。 (196-197)


但在我们的例子中,我们没有纯文本密码。 我的问题是:除了在服务器上提供纯文本密码之外,我们还有什么替代方法?

web-services security passwords wss4j
1个回答
2
投票

SHA-1 可以完美地用作“明文”密码。

  • 询问用户密码
  • 将其转换为 SHA-1
  • 通过PasswordDigest运行它
  • 服务器将对数据库中的 SHA-1 执行相同的操作
  • 服务器会发现它们匹配并允许访问
© www.soinside.com 2019 - 2024. All rights reserved.