Java Web 服务: Axis2 WS-Security 签名和加密
2009-11-05 00:00:00 来源:WEB开发网密码回调类与 “Axis2 WS-Security 基础” 中使用的类稍有不同。在那篇文章中,只需要在服务器使用密码回调,并且只需要检验(用于明文式 UsernameToken)或设置(用于散列式 UsernameToken)与特定用户名匹配的密码。对于本文使用的公开密匙加密,回调必须提供用于保护 keystore 内的私有密匙的密码。并且需要对客户机(为客户机私有密匙提供密码)和服务器(为服务器私有密匙提供密码)使用单独的回调。清单 2 展示了回调的客户端版本:
清单 2. 客户机密码回调/**
* Simple password callback handler. This just checks if the password for the private key
* is being requested, and if so sets that value.
*/
public class PWCBHandler implements CallbackHandler
{
public void handle(Callback[] callbacks) throws IOException {
for (int i = 0; i < callbacks.length; i++) {
WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i];
String id = pwcb.getIdentifer();
int usage = pwcb.getUsage();
if (usage == WSPasswordCallback.DECRYPT ||
usage == WSPasswordCallback.SIGNATURE) {
// used to retrieve password for private key
if ("clientkey".equals(id)) {
pwcb.setPassword("clientpass");
}
}
}
}
}
更多精彩
赞助商链接