无法为Spring CryptoFactoryBean设置加密提供程序

时间:2019-07-11 19:52:47

标签: java apache spring-boot wss4j

在尝试为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类创建并实现了该类,但仍不能用作加密提供程序。

要创建一个工厂吗?

1 个答案:

答案 0 :(得分:0)

设置密码提供者时,您实际上需要传递类本身。例如cryptoFactoryBean.setCryptoProvider(Merlin.class);