当前位置: 首页 > 知识库问答 >
问题:

micronaut多数据源加密密码

陶瀚玥
2023-03-14

我创建了一个micronaut应用程序,它可以通过jdbc模板访问多个数据源。

@Factory
@Requires(beans = DatasourceFactory.class)
public class JdbcTemplateFactory {

    @Context
    @EachBean(DataSource.class)
    JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}

这将使用io。微型机器人。配置jdbc。公猫使用我的配置yml的DatasourceFactory

datasources:
  datasource111111:
    url: url
    username: username
    password: password
    driverClassName: org.h2.Driver
  datasource222222:
    url: url
    username: username
    password: password
    driverClassName: org.h2.Driver

问题是我想以某种方式解密来自配置的密码。我的第一次尝试是“替换”工厂正在使用的DatasourceConfigancebean,但没有运气,它给了我一个没有意义的错误(io.micronaut.context.exceptions.DependencyInjtionExctive)。

以下是我的替换尝试:

@Replaces(DatasourceConfiguration.class)
@EachProperty(value = BasicJdbcConfiguration.PREFIX, primary = "default")
public class EncryptedDatasourceConfiguration extends DatasourceConfiguration {
    public EncryptedDatasourceConfiguration(String name) {
        super(name);
    }

    @Override
    public String getPassword() {
        return "encrypted password";
    }
}

知道我做错了什么吗??谢谢

答:必须按照建议听bean creation

@Singleton
public class DatasourceInitiliazer implements BeanCreatedEventListener<DatasourceConfiguration> {
    @Override
    public DatasourceConfiguration onCreated(BeanCreatedEvent<DatasourceConfiguration> event) {
        final DatasourceConfiguration datasource = event.getBean();
        datasource.setPassword("encryptedPassword");
        return datasource;
    }
}

共有1个答案

郎宏浚
2023-03-14

您最好创建一个BeanCreatedEventListener,读取密码,解密密码,并将其设置回配置

 类似资料:
  • 前面小节介绍了如何存储密码,但是有的时候,我们想把一些敏感数据加密后存储起来,在将来的某个时候,随需将它们解密出来,此时我们应该在选用对称加密算法来满足我们的需求。 base64加解密 如果Web应用足够简单,数据的安全性没有那么严格的要求,那么可以采用一种比较简单的加解密方法是base64,这种方式实现起来比较简单,Go语言的base64包已经很好的支持了这个,请看下面的例子: package

  • bcrypt 数据加密 文档:https://www.npmjs.com/package/bcryptjs 安装:cnpm i -S bcryptjs [ ] 使用: 封装helper函数 app / extend / helper.js // 引入加密插件 const bcrypt = require('bcryptjs') const jwt = require('jsonwebtoken')

  • EncryptAlgorithm SPI 名称 详细说明 EncryptAlgorithm 数据加密算法 已知实现类 详细说明 MD5EncryptAlgorithm 基于 MD5 的数据加密算法 AESEncryptAlgorithm 基于 AES 的数据加密算法 RC4EncryptAlgorithm 基于 RC4 的数据加密算法 QueryAssistedEncryptAlgorithm S

  • 配置项说明 命名空间:http://shardingsphere.apache.org/schema/shardingsphere/encrypt/encrypt-5.0.0.xsd <encrypt:rule /> 名称 类型 说明 默认值 id 属性 Spring Bean Id queryWithCipherColumn (?) 属性 是否使用加密列进行查询。在有原文列的情况下,可以使用原文

  • 配置项说明 spring.shardingsphere.datasource.names= # 省略数据源配置,请参考使用手册 spring.shardingsphere.rules.encrypt.tables.<table-name>.columns.<column-name>.cipher-column= # 加密列名称 spring.shardingsphere.rules.encryp

  • 配置项说明 dataSources: # 省略数据源配置,请参考使用手册 rules: - !ENCRYPT tables: <table-name> (+): # 加密表名称 columns: <column-name> (+): # 加密列名称 cipherColumn: # 密文列名称 assistedQuer