/ / Wie konfiguriere ich Oracle Database Network Encryption mit MyBatis? - Oracle, Verschlüsselung, JDBC, Verbindung, Mybatis

So konfigurieren Sie die Datenbank-Netzwerkverschlüsselung von Oracle mit MyBatis - Oracle, Verschlüsselung, JDBC, Verbindung, Mybatis

Ich habe die Anforderung, die Daten zwischen dem Webserver und dem Datenbankserver zu verschlüsseln, indem Mybatis als Persistenzframework verwendet wird.

Der Datenbankserver ist Oracle 12c Enterprise Edition Version 12.1.0.2.0 - 64bit. Ich verwende den Treiber ojdbc7.jar.

Ich kann eine verschlüsselte Verbindung wie hier beschrieben herstellen ... https://docs.oracle.com/database/121/DBSEG/asojbdc.htm#DBSEG9613. Über MyBatis konnte ich das jedoch nicht. Ich lege die Verbindungseigenschaften in der Datei mybatis-config.xml fest. Nachfolgend finden Sie den Inhalt dieser Datei:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="false" />
<setting name="jdbcTypeForNull" value="NULL"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@//<server>:<port>/<service>"/>
<property name="username" value="<username>"/>
<property name="password" value="<password>"/>
<property name="poolMaximumActiveConnections" value="20"/>
<property name="poolMaximumIdleConnections" value="10"/>
<property name="poolMaximumCheckoutTime" value="180000"/>
<property name="poolPingQuery" value="select 0 from dual"/>
<property name="poolPingEnabled" value="true"/>
<property name="poolPingConnectionsNotUsedFor" value="1800000"/>
<property name="CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL" value="REQUIRED"/>
<property name="CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES" value="AES256"/>
</dataSource>
</environment>
</environments>
</configuration>

Die letzten beiden Eigenschaftselemente sind mein VersuchKonfigurieren einer verschlüsselten Verbindung. Ohne sie kann ich mich ohne Verschlüsselung erfolgreich verbinden. Bei den letzten beiden Eigenschaftselementen bekomme ich nur einen Fehler:

Verursacht durch: org.apache.ibatis.exceptions.PersistenceException: ### Fehler beim Erstellen von SqlSession. Der Fehler ist möglicherweise in SQL Mapper vorhanden Konfiguration ### Ursache: org.apache.ibatis.builder.BuilderException: Fehler beim Analysieren der SQL Mapper-Konfiguration. Ursache: org.apache.ibatis.datasource.DataSourceException: Unbekannte Datenquelle Eigenschaft: CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES

Weiß jemand, wie man das löst?

Antworten:

1 für die Antwort № 1

Die Namen der JDBC-Eigenschaften sind nicht ganz richtig. Beachten Sie, dass sie im JavaDoc unter oracle.jdbc.OracleConnection zu finden sind. Sie können diese probieren:

BEARBEITEN: Wie Chris in diesem Kommentar erklärt, verlangt MyBatis, dass dem Namen der Eigenschaft des Treibers "driver" vorangestellt ist.

<property name="driver.oracle.net.encryption_client" value="REQUIRED"/>
<property name="driver.oracle.net.encryption_types_client" value="(AES256)"/>