Oracle
 sql >> Database >  >> RDS >> Oracle

Crittografia Oracle Advanced Security con configurazione XML JDBC Spring

Le proprietà Oracle non vengono fornite nell'API Spring DataSource, quindi è necessario impostare le proprietà aggiuntive dopo l'avvio del bean. Puoi farlo con una classe che implementa 'beanpostprocessor'. Inoltre, poiché questa è Spring, è necessario ottenere un handle per l'attuale dataSource per impostare le proprietà aggiuntive senza far esplodere l'inizializzazione del bean. Non puoi usare Autowire nella classe perché il PostProcessor salterà quel bean. Quindi, devi lanciare il fagiolo. Quindi puoi utilizzare setConnectionProperties per inizializzare i parametri richiesti da Oracle anziché impostare le proprietà nel bean Spring che non funzionerà e darà l'errore sopra descritto.

Inoltre dovresti correggere il titolo di questo argomento Sicurezza-->Sicurezza. Scusa se la formattazione è disattivata perché sono nuovo nel pubblicare le risposte.

@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;
    }
}