带有PasswordDigest安全性问题的WS-Security

时间:2013-06-10 07:41:23

标签: cxf ws-security

我创建了一个使用WS-Security保护的WS端点。客户端身份验证基于具有PasswordDigest密码类型的UsernameToken(遗憾的是,基于证书的身份验证不是一种选择,我们有一些旧版客户端。)

以下是SOAP请求示例:

<soapenv:Envelope>
    <soapenv:Header>
        <wsse:Security>
            <wsse:UsernameToken>
                <wsse:Username>XXX</wsse:Username>
                <wsse:Password>vCsshCTkiz07lpCZXVYgwXPU7n4=</wsse:Password>
                <wsse:Nonce>fsf9Vc2YNErZy4Cc2wcYjw==</wsse:Nonce>
                <wsu:Created>2013-06-06T09:31:16.757Z</wsu:Created>
            </wsse:UsernameToken>
        </wsse:Security>
    </soapenv:Header>
    <soapenv:Body>
        <rem:start>
            <xxx>111</xxx>
        </rem:start>
    </soapenv:Body>
</soapenv:Envelope>

据我所知,密码是以Base64(SHA(Nonce + Created + ClearTextPassword))生成的。

我正在实施一个CXF PasswordCallback来为CXF框架提供正确的明文密码,因此它可以计算其摘要值并与提供的摘要值进行比较。

public class PasswordCallbackHandler implements CallbackHandler {

    @Override
    public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException {

        final WSPasswordCallback passwordCallback = (WSPasswordCallback) callbacks[0];
        passwordCallback.setPassword("cleartextpassword");

    }

}

我担心的是我必须将密码值设置为纯文本,因此我必须以明文形式存储它们(我的用例:在数据库中)。

我觉得这是我用PasswordDigest方案获得的最好的方式,但我倾向于知道是否有更好的替代方案......

谢谢!

微米。

0 个答案:

没有答案
相关问题