Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Advanced Security-Verschlüsselung mit Spring JDBC-XML-Konfiguration

Die Oracle-Eigenschaften sind in der Spring DataSource-API nicht angegeben, daher müssen Sie die zusätzlichen Eigenschaften festlegen, nachdem die Bean gestartet wurde. Sie können dies mit einer Klasse tun, die 'Beanpostprocessor' implementiert. Da dies Spring ist, müssen Sie außerdem ein Handle für die aktuelle dataSource erhalten, um die zusätzlichen Eigenschaften festzulegen, ohne die Bean-Init zu sprengen. Sie können Autowire nicht in der Klasse verwenden, da der PostProcessor diese Bean dann überspringt. Also musst du die Bohne werfen. Dann können Sie setConnectionProperties verwenden, um die von Oracle erforderlichen Parameter zu initialisieren, anstatt die Eigenschaften in der Spring-Bean festzulegen, was nicht funktioniert und den oben beschriebenen Fehler ausgibt.

Außerdem sollten Sie den Titel dieses Themas Sicherheit-->Sicherheit korrigieren. Tut mir leid, wenn die Formatierung deaktiviert ist, da ich neu im Posten von Antworten bin.

@Component
public class OracleConfigurer implements BeanPostProcessor {

@Override
public Object postProcessBeforeInitialization(Object bean, String name) throws BeansException {


final Logger LOG = LoggerFactory.getLogger(OracleConfigurer.class);
    if (bean instanceof DriverManagerDataSource) {
          Properties properties = ((DriverManagerDataSource) bean).getConnectionProperties();
          if (null == properties) properties = new Properties();
                properties.put("oracle.net.encryption_types_client", "(AES256)");
                properties.put("oracle.net.crypto_checksum_client", "REQUIRED");
                properties.put("oracle.net.encryption_client", "REQUIRED");
                DriverManagerDataSource dataSource = ((DriverManagerDataSource) bean);
                dataSource.setConnectionProperties(properties);
        }
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String name) throws
        BeansException {
        return bean;
    }
}