Oracle
 sql >> Base de données >  >> RDS >> Oracle

Chiffrement Oracle Advanced Secuity avec la configuration Spring JDBC xml

Les propriétés Oracle ne sont pas données dans l'API Spring DataSource, vous devez donc définir les propriétés supplémentaires après l'initialisation du bean. Vous pouvez le faire avec une classe qui implémente 'beanpostprocessor'. De plus, comme il s'agit de Spring, vous devez obtenir un handle vers la source de données actuelle pour définir les propriétés supplémentaires sans faire exploser l'init du bean. Vous ne pouvez pas utiliser Autowire dans la classe car le PostProcessor ignorera ce bean. Donc, vous devez jeter le haricot. Ensuite, vous pouvez utiliser setConnectionProperties pour initialiser les paramètres requis par Oracle plutôt que de définir les propriétés dans le bean Spring qui ne fonctionnera pas et donnera l'erreur décrite ci-dessus.

Vous devez également corriger le titre de ce sujet Sécurité-->Sécurité. Désolé si le formatage est désactivé car je suis nouveau dans la publication de réponses.

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