Remove Oracle JDBC driver out of the box (#29895)
Closes: #29491 Co-authored-by: Václav Muzikář <vaclav@muzikari.cz> Co-authored-by: Martin Bartoš <mabartos@redhat.com> Signed-off-by: Peter Zaoral <pzaoral@redhat.com>
This commit is contained in:
parent
6ee4d3259f
commit
cd2451d58b
7 changed files with 63 additions and 45 deletions
|
@ -433,3 +433,8 @@ If the session is using the remember me feature, the idle timeout and max lifesp
|
||||||
|
|
||||||
{project_name} now requires a {jdgserver_name} server version of at least 15.0.0 for external {jdgserver_name} deployments.
|
{project_name} now requires a {jdgserver_name} server version of at least 15.0.0 for external {jdgserver_name} deployments.
|
||||||
An external {jdgserver_name} deployment is supported for multi-site setups as outlined in the HA guide.
|
An external {jdgserver_name} deployment is supported for multi-site setups as outlined in the HA guide.
|
||||||
|
|
||||||
|
= Oracle Database driver not part of the distribution
|
||||||
|
|
||||||
|
The Oracle Database JDBC driver is no longer part of the Keycloak distribution.
|
||||||
|
If you wish to use Oracle DB, you must manually install a version of the Oracle Driver that is compatible with your specific environment. Instructions for this process can be found in the https://www.keycloak.org/server/db[Configuring the database] {section}.
|
||||||
|
|
|
@ -30,13 +30,11 @@ The server has built-in support for different databases. You can query the avail
|
||||||
By default, the server uses the `dev-file` database. This is the default database that the server will use to persist data and
|
By default, the server uses the `dev-file` database. This is the default database that the server will use to persist data and
|
||||||
only exists for development use-cases. The `dev-file` database is not suitable for production use-cases, and must be replaced before deploying to production.
|
only exists for development use-cases. The `dev-file` database is not suitable for production use-cases, and must be replaced before deploying to production.
|
||||||
|
|
||||||
<@profile.ifProduct>
|
|
||||||
|
|
||||||
== Installing a database driver
|
== Installing a database driver
|
||||||
|
|
||||||
Database drivers are shipped as part of {project_name} except for the Oracle Database and Microsoft SQL Server drivers which need to be installed separately.
|
Database drivers are shipped as part of {project_name} except for the Oracle Database<@profile.ifProduct> and Microsoft SQL Server drivers</@profile.ifProduct>.
|
||||||
|
|
||||||
Install the necessary driver if you want to connect to one of these databases or skip this section if you want to connect to a different database for which the database driver is already included.
|
Install the necessary missing driver manually if you want to connect to one of these databases or skip this section if you want to connect to a different database for which the database driver is already included.
|
||||||
|
|
||||||
=== Installing the Oracle Database driver
|
=== Installing the Oracle Database driver
|
||||||
|
|
||||||
|
@ -74,6 +72,8 @@ See the <@links.server id="containers" /> {section} for details on how to build
|
||||||
|
|
||||||
Then continue configuring the database as described in the next section.
|
Then continue configuring the database as described in the next section.
|
||||||
|
|
||||||
|
<@profile.ifProduct>
|
||||||
|
|
||||||
=== Installing the Microsoft SQL Server driver
|
=== Installing the Microsoft SQL Server driver
|
||||||
|
|
||||||
To install the Microsoft SQL Server driver for {project_name}:
|
To install the Microsoft SQL Server driver for {project_name}:
|
||||||
|
|
|
@ -78,6 +78,16 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-jdbc-oracle</artifactId>
|
<artifactId>quarkus-jdbc-oracle</artifactId>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>com.oracle.database.jdbc</groupId>
|
||||||
|
<artifactId>ojdbc11</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>com.oracle.database.nls</groupId>
|
||||||
|
<artifactId>orai18n</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
|
@ -665,20 +675,6 @@
|
||||||
</property>
|
</property>
|
||||||
</activation>
|
</activation>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>io.quarkus</groupId>
|
|
||||||
<artifactId>quarkus-jdbc-oracle</artifactId>
|
|
||||||
<exclusions>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>com.oracle.database.jdbc</groupId>
|
|
||||||
<artifactId>ojdbc11</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
<exclusion>
|
|
||||||
<groupId>com.oracle.database.nls</groupId>
|
|
||||||
<artifactId>orai18n</artifactId>
|
|
||||||
</exclusion>
|
|
||||||
</exclusions>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>io.quarkus</groupId>
|
<groupId>io.quarkus</groupId>
|
||||||
<artifactId>quarkus-jdbc-mssql</artifactId>
|
<artifactId>quarkus-jdbc-mssql</artifactId>
|
||||||
|
|
|
@ -103,16 +103,8 @@ class BuildCommandDistTest {
|
||||||
void missingOracleJdbcDriver(LaunchResult result) {
|
void missingOracleJdbcDriver(LaunchResult result) {
|
||||||
CLIResult cliResult = (CLIResult) result;
|
CLIResult cliResult = (CLIResult) result;
|
||||||
|
|
||||||
String dbDriver = Database.getDriver("oracle", true).orElse("");
|
String dbDriver = Database.getDriver("oracle", false).orElse("");
|
||||||
String errorMessage = String.format("ERROR: Unable to find the JDBC driver (%s). You need to install it.", dbDriver);
|
cliResult.assertError(String.format("ERROR: Unable to find the JDBC driver (%s). You need to install it.", dbDriver));
|
||||||
|
cliResult.assertNoBuild();
|
||||||
boolean isProduct = System.getProperty("product") != null;
|
|
||||||
if (isProduct) {
|
|
||||||
cliResult.assertError(errorMessage);
|
|
||||||
cliResult.assertNoBuild();
|
|
||||||
} else {
|
|
||||||
cliResult.assertNoMessage(errorMessage);
|
|
||||||
cliResult.assertBuild();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,12 +17,18 @@
|
||||||
|
|
||||||
package org.keycloak.it.storage.database;
|
package org.keycloak.it.storage.database;
|
||||||
|
|
||||||
|
import org.keycloak.it.junit5.extension.BeforeStartDistribution;
|
||||||
import org.keycloak.it.junit5.extension.CLIResult;
|
import org.keycloak.it.junit5.extension.CLIResult;
|
||||||
import org.keycloak.it.junit5.extension.CLITest;
|
import org.keycloak.it.junit5.extension.CLITest;
|
||||||
import org.keycloak.it.junit5.extension.WithDatabase;
|
import org.keycloak.it.junit5.extension.WithDatabase;
|
||||||
|
import org.keycloak.it.utils.KeycloakDistribution;
|
||||||
|
import org.keycloak.it.utils.RawKeycloakDistribution;
|
||||||
|
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@CLITest
|
@CLITest
|
||||||
@WithDatabase(alias = "oracle")
|
@WithDatabase(alias = "oracle")
|
||||||
|
@BeforeStartDistribution(OracleTest.CopyOracleJdbcDriver.class)
|
||||||
public class OracleTest extends BasicDatabaseTest {
|
public class OracleTest extends BasicDatabaseTest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,4 +40,14 @@ public class OracleTest extends BasicDatabaseTest {
|
||||||
protected void assertWrongPassword(CLIResult cliResult) {
|
protected void assertWrongPassword(CLIResult cliResult) {
|
||||||
cliResult.assertMessage("ORA-01017: invalid username/password; logon denied");
|
cliResult.assertMessage("ORA-01017: invalid username/password; logon denied");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class CopyOracleJdbcDriver implements Consumer<KeycloakDistribution> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void accept(KeycloakDistribution distribution) {
|
||||||
|
RawKeycloakDistribution rawDist = distribution.unwrap(RawKeycloakDistribution.class);
|
||||||
|
rawDist.copyProvider("com.oracle.database.jdbc", "ojdbc11");
|
||||||
|
rawDist.copyProvider("com.oracle.database.nls", "orai18n");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -460,8 +460,6 @@ public final class RawKeycloakDistribution implements KeycloakDistribution {
|
||||||
if (System.getProperty("product") != null) {
|
if (System.getProperty("product") != null) {
|
||||||
// JDBC drivers might be excluded if running as a product build
|
// JDBC drivers might be excluded if running as a product build
|
||||||
copyProvider(dPath, "com.microsoft.sqlserver", "mssql-jdbc");
|
copyProvider(dPath, "com.microsoft.sqlserver", "mssql-jdbc");
|
||||||
copyProvider(dPath, "com.oracle.database.jdbc", "ojdbc11");
|
|
||||||
copyProvider(dPath, "com.oracle.database.nls", "orai18n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -191,6 +191,31 @@
|
||||||
</artifactItems>
|
</artifactItems>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>includeOracleJdbcDriver</id>
|
||||||
|
<phase>generate-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>com.oracle.database.jdbc</groupId>
|
||||||
|
<artifactId>ojdbc11</artifactId>
|
||||||
|
<version>${oracle-jdbc.version}</version>
|
||||||
|
<type>jar</type>
|
||||||
|
<outputDirectory>${auth.server.home}/providers</outputDirectory>
|
||||||
|
</artifactItem>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>com.oracle.database.nls</groupId>
|
||||||
|
<artifactId>orai18n</artifactId>
|
||||||
|
<version>${oracle-jdbc.version}</version>
|
||||||
|
<type>jar</type>
|
||||||
|
<outputDirectory>${auth.server.home}/providers</outputDirectory>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
<execution>
|
<execution>
|
||||||
<id>copy-testsuite-providers</id>
|
<id>copy-testsuite-providers</id>
|
||||||
<phase>generate-resources</phase>
|
<phase>generate-resources</phase>
|
||||||
|
@ -363,20 +388,6 @@
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<artifactItems>
|
<artifactItems>
|
||||||
<artifactItem>
|
|
||||||
<groupId>com.oracle.database.jdbc</groupId>
|
|
||||||
<artifactId>ojdbc11</artifactId>
|
|
||||||
<version>${oracle-jdbc.version}</version>
|
|
||||||
<type>jar</type>
|
|
||||||
<outputDirectory>${auth.server.home}/providers</outputDirectory>
|
|
||||||
</artifactItem>
|
|
||||||
<artifactItem>
|
|
||||||
<groupId>com.oracle.database.nls</groupId>
|
|
||||||
<artifactId>orai18n</artifactId>
|
|
||||||
<version>${oracle-jdbc.version}</version>
|
|
||||||
<type>jar</type>
|
|
||||||
<outputDirectory>${auth.server.home}/providers</outputDirectory>
|
|
||||||
</artifactItem>
|
|
||||||
<artifactItem>
|
<artifactItem>
|
||||||
<groupId>com.microsoft.sqlserver</groupId>
|
<groupId>com.microsoft.sqlserver</groupId>
|
||||||
<artifactId>mssql-jdbc</artifactId>
|
<artifactId>mssql-jdbc</artifactId>
|
||||||
|
|
Loading…
Reference in a new issue