场景:
Web 服务生产者仅在数据库中存储密码的 SHA-1 哈希值。我们需要使用用户名/密码组合来验证 Web 服务用户。
Web 服务安全 UsernameToken 配置文件 允许我们为此目的添加肥皂标头:
该元素是 WSS 中引入:SOAP 消息 安全文件作为一种方式 提供用户名。
在元素内,a 元素可能是 指定的。密码类型 密码文本和密码摘要是 不限于实际密码, 虽然这是一个常见的情况。 (146-151)
PasswordText 密码类型意味着密码以纯文本形式通过网络发送,如果我们不使用传输级别安全机制,这将是一个安全问题。 PasswordDigest 避免发送纯文本密码并发送哈希值。但为了避免重放攻击(即攻击者使用窃听来捕获散列密码并通过另一个请求重新发送),PasswordDigest 在计算散列之前向密码添加时间戳和随机数。此添加会导致以下限制:
请注意,PasswordDigest 只能 如果使用纯文本密码(或 密码等效)可用 向请求者和请求者双方 接受者。 (196-197)
但在我们的例子中,我们没有纯文本密码。 我的问题是:除了在服务器上提供纯文本密码之外,我们还有什么替代方法?
SHA-1 可以完美地用作“明文”密码。