Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criptografia Oracle Advanced Security com configuração Spring JDBC xml


As propriedades do Oracle não são fornecidas na API do Spring DataSource, portanto, você deve definir as propriedades adicionais após a inicialização do bean. Você pode fazer isso com uma classe que implementa 'beanpostprocessor'. Além disso, como este é o Spring, você precisa obter um identificador para o dataSource atual para definir as propriedades adicionais sem explodir o init do bean. Você não pode usar o Autowire na classe porque o PostProcessor pulará esse bean. Então, você tem que lançar o feijão. Em seguida, você pode usar setConnectionProperties para inicializar os parâmetros exigidos pelo Oracle em vez de definir as propriedades no bean Spring, que não funcionará e fornecerá o erro descrito acima.

Além disso, você deve corrigir o título deste tópico Segurança-->Segurança. Desculpe se a formatação está desativada, pois sou novo em postar respostas.
@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;
    }
}