SpringBoot集成Couchbase字段级加密(FLE)时遇cryptoManager为空异常的问题求助
SpringBoot集成Couchbase字段级加密(FLE)时遇cryptoManager为空异常的问题求助
大家好,我尝试在SpringBoot Java应用中集成Couchbase的字段级加密(FLE),已经按照官方文档完成了配置,但始终无法正常运行。
每当我在实体字段上使用@Encrypted注解时,就会抛出如下异常:
Request processing failed: java.lang.IllegalArgumentException: cryptoManager needed to encrypt/decrypt but it is null. Override needed for cryptoManager() method of org.springframework.data.couchbase.core.convert.AbstractCouchbaseConverter
以下是我的相关代码:
加密配置类
@Configuration @EnableCouchbaseRepositories("my.repo.under.here") public class EncryptionConfig extends AbstractCouchbaseConfiguration { // 常规配置 @Override public String getConnectionString() { return "localhost"; } @Override public String getUserName() { return "Administrator"; } @Override public String getPassword() { return "admin123"; } @Override public String getBucketName() { return "my_bucket"; } /* 提供cryptoManager */ @Override protected CryptoManager cryptoManager() { try { // 加载Java密钥库 KeyStore keyStore = KeyStore.getInstance("JCEKS"); FileInputStream keyStoreStream = new FileInputStream("/Users/asd1983/my-keystore.jceks"); keyStore.load(keyStoreStream, "test123".toCharArray()); // 用密钥库初始化Keyring Keyring keyring = new KeyStoreKeyring(keyStore, alias -> "keypassword"); // AES-256搭配HMAC SHA-512认证,需要64字节密钥 AeadAes256CbcHmacSha512Provider provider = AeadAes256CbcHmacSha512Provider.builder().keyring(keyring).build(); CryptoManager cryptoManager = DefaultCryptoManager.builder().decrypter(provider.decrypter()) .defaultEncrypter(provider.encrypterForKey("my-key")).build(); return cryptoManager; } catch (Exception e) { throw new RuntimeException(e); } } }
实体类
@Document public class Data { @Id private String id; @Encrypted private String password; }
Repository接口
package my.repo.under.here; @Repository public interface DataRepository extends CouchbaseRepository<Data, String> { }
有没有大佬能帮我排查下问题?明明已经重写了cryptoManager()方法,为什么还是提示这个对象为空呢?
备注:内容来源于stack exchange,提问作者Colin Schofield
相关产品推荐
相关产品推荐

