在尝试为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
类创建并实现了该类,但仍不能用作加密提供程序。
要创建一个工厂吗?
答案 0 :(得分:0)
设置密码提供者时,您实际上需要传递类本身。例如cryptoFactoryBean.setCryptoProvider(Merlin.class);