use*_*812 4 java web-services cxf
我正在尝试外部化签署SOAP CXF请求消息所需的crypto.properties文件.根据框架,它应该在类路径中具有属性文件.我无法从外部加载它.请帮助我,我尝试了很多技巧.
我得到以下例外
org.apache.ws.security.WSSecurityException:一般安全性错误(无法加载资源文件:
我们已经同步了我们的开发和生产环境代码库,因此非常有必要对文件进行外部化
使用的CXF框架是2.6.10
如Colm O hEigeartaigh所述,可以使用最新版本的CXF和WSS4J从外部文件加载配置设置.但是,这仍然意味着需要将属性写入文件并再次加载它们.
您还可以在内存中构造一个Properties对象,并让CXF使用它.这也适用于较旧的CXF版本.这是通过扩展WSS4JInInterceptor
和WSS4JOutInterceptor
,然后覆盖Crypto loadCryptoFromPropertiesFile(String propFilename, RequestData reqData)
方法并返回您自己Crypto
可以使用的对象来完成的CryptoFactory.getInstance(properties)
.
所以类似于:
Properties cxfProps = new Properties();
cxfProps.setProperty("org.apache.ws.security.crypto.provider", "org.apache.ws.security.components.crypto.Merlin");
cxfProps.setProperty("org.apache.ws.security.crypto.merlin.keystore.type", "jks");
cxfProps.setProperty("org.apache.ws.security.crypto.merlin.keystore.alias", "client");
cxfProps.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", PASSWORD);
cxfProps.setProperty("org.apache.ws.security.crypto.merlin.keystore.file", "keystore.j2");
Crypto crypto = CryptoFactory.getInstance(cxfProps);
Map<String, Object> inProps = new HashMap<String, Object>();
Map<String, Object> outProps = new HashMap<String, Object>();
inProps.put(WSHandlerConstants.ACTION, "Signature");
inProps.put(WSHandlerConstants.SIG_PROP_FILE, "dummy_value"); // Only necessary to avoid NPE
outProps.put(WSHandlerConstants.ACTION, "Signature");
outProps.put(WSHandlerConstants.USER, "client");
outProps.put(WSHandlerConstants.SIG_PROP_FILE, "dummy_value"); // Only necessary to avoid NPE
WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps) {
@Override
protected Crypto loadCryptoFromPropertiesFile(String propFilename, RequestData reqData)
throws WSSecurityException {
return crypto;
}
};
WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps) {
@Override
protected Crypto loadCryptoFromPropertiesFile(String propFilename, RequestData reqData)
throws WSSecurityException {
return crypto;
}
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3818 次 |
最近记录: |