sql >> Base de Datos >  >> RDS >> Oracle

Cifrado Oracle Advanced Secuity con configuración Spring JDBC xml

Las propiedades de Oracle no se proporcionan en la API Spring DataSource, por lo que debe establecer las propiedades adicionales después de iniciar el bean. Puede hacer esto con una clase que implemente 'beanpostprocessor'. Además, dado que se trata de Spring, debe controlar el origen de datos actual para establecer las propiedades adicionales sin explotar el bean init. No puede usar Autowire en la clase porque el PostProcessor omitirá ese bean. Entonces, tienes que lanzar el frijol. Luego, puede usar setConnectionProperties para iniciar los parámetros requeridos por Oracle en lugar de configurar las propiedades en Spring Bean, que no funcionará y generará el error descrito anteriormente.

También debe corregir el título de este tema Seguridad-->Seguridad. Lo siento si el formato está desactivado, ya que soy nuevo en la publicación de respuestas.

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