java - 无法为 Spring CryptoFactoryBean 设置 Crypto Provider
问题描述
尝试为 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);
推荐阅读
- javascript - 将样式应用于新创建的元素的脚本
- css - Custom Checkbox / Radio Buttons Focus
- javascript - 为什么 Vue.js/Axios 不渲染我定义的数据?
- android - 使用嵌套片段时底部导航栏消失
- regex - Grep 正则表达式打印整行而不是单词匹配
- database - 数据记录中的不安全表达式
- html - 两个六边形的居中
- javascript - 嵌套的 for 循环在节点/puppeteer 上下文中未按预期执行
- mysql - Mysql在文本中只搜索“7”而不是“17”
- javascript - Mongodb检查数组的子文档中是否存在字段