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

时间:2010-06-24 10:46:31

标签: security web-services passwords wss wss4j

情景:

Web服务生产者只有SHA-1密码存储在数据库中。我们需要使用用户名/密码组合对Web服务用户进行身份验证。


Web Services Security UsernameToken Profile 允许我们为此目的添加soap标头:

  

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

     

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

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

  

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


但在我们的案例中,我们没有纯文本密码。 我的问题是:我们还有哪些替代方法可以在服务器上提供纯文本密码?

1 个答案:

答案 0 :(得分:2)

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

  • 询问用户密码
  • 将其转换为SHA-1
  • 通过PasswordDigest事件
  • 运行它
  • 服务器将对数据库中的SHA-1执行相同的操作
  • 服务器会发现它们匹配并允许访问