尝试为Spring Boot的CryptoFactoryBean
实例设置密码提供程序时,需要使用扩展Apache Crypto
类的类。但是,当前的Apache WSS4J加密提供程序都没有实际扩展Crypto
类-它们扩展了实现CryptoBase
的Crypto
。在Eclipse中,以下代码将引发错误:
@Bean
public CryptoFactoryBean serverKeyStoreCryptoFactoryBean() throws IOException {
CryptoFactoryBean cryptoFactoryBean = new CryptoFactoryBean();
try {
cryptoFactoryBean.setKeyStoreLocation(new ClassPathResource("keystore.jks"));
cryptoFactoryBean.setKeyStorePassword(keyStorePassword);
cryptoFactoryBean.setCryptoProvider(new Merlin());
} catch (Exception e) {
LOGGER.error("Crypto Factory Bean: unable to set the keystore location or password", e);
}
return cryptoFactoryBean;
}
该错误表明,由于
Merlin
类未扩展Crypto
类,因此尽管为Crypto
类创建并实现了该类,但它仍不能用作加密提供程序。我需要创建一个工厂来做到这一点吗?
最佳答案
设置加密提供程序时,您实际上需要传递类本身。例如cryptoFactoryBean.setCryptoProvider(Merlin.class);