Return Oracle JDBC driver to the upstream

Closes #22999
This commit is contained in:
Martin Bartoš 2023-09-06 11:43:18 +02:00 committed by Alexander Schwartz
parent 8887be7887
commit 6ca78b7554
6 changed files with 80 additions and 49 deletions

View file

@ -13,9 +13,3 @@ the latest FAPI 2 draft specifications when communicating with your clients. Tha
Keycloak has preview for support for OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer (DPoP). Thanks to Keycloak has preview for support for OAuth 2.0 Demonstrating Proof-of-Possession at the Application Layer (DPoP). Thanks to
https://github.com/tnorimat[Takashi Norimatsu] and https://github.com/dteleguin[Dmitry Telegin] for their contributions. https://github.com/tnorimat[Takashi Norimatsu] and https://github.com/dteleguin[Dmitry Telegin] for their contributions.
= Oracle Database driver not part of the distribution
The Oracle Database JDBC driver is no longer part of the Keycloak distribution.
Administrators will need to install a version of the Oracle Driver matching their environment
as described in the configuring the database {section}.

View file

@ -30,12 +30,6 @@ Previous versions of Keycloak supported specifying the encoding in the first lin
Message properties files for themes are now read in UTF-8 encoding, with an automatic fallback to ISO-8859-1 encoding. Message properties files for themes are now read in UTF-8 encoding, with an automatic fallback to ISO-8859-1 encoding.
If you are using a different encoding, convert the files to UTF-8. If you are using a different encoding, convert the files to UTF-8.
= Oracle Database driver not part of the distribution
The Oracle Database JDBC driver is no longer part of the Keycloak distribution.
Administrators will need to install a version of the Oracle Driver matching their environment
as described in the configuring the database {section}.
= Changes to the value format of claims mapped by the realm and client role mappers = Changes to the value format of claims mapped by the realm and client role mappers
Before this release, both realm (`User Realm Role`) and client (`User Client Role`) protocol mappers Before this release, both realm (`User Realm Role`) and client (`User Client Role`) protocol mappers

View file

@ -2,6 +2,7 @@
<#import "/templates/kc.adoc" as kc> <#import "/templates/kc.adoc" as kc>
<#import "/templates/options.adoc" as opts> <#import "/templates/options.adoc" as opts>
<#import "/templates/links.adoc" as links> <#import "/templates/links.adoc" as links>
<#import "/templates/profile.adoc" as profile>
<@tmpl.guide <@tmpl.guide
title="Configuring the database" title="Configuring the database"
@ -28,6 +29,8 @@ 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 (Oracle) == Installing a database driver (Oracle)
Database drivers are shipped as part of Keycloak except for the Oracle Database driver which needs to be installed separately. Database drivers are shipped as part of Keycloak except for the Oracle Database driver which needs to be installed separately.
@ -68,6 +71,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>
== Configuring a database == Configuring a database
For each supported database, the server provides some opinionated defaults to simplify database configuration. You complete the configuration by providing some key settings such as the database host and credentials. For each supported database, the server provides some opinionated defaults to simplify database configuration. You complete the configuration by providing some key settings such as the database host and credentials.

View file

@ -78,16 +78,6 @@
<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>
@ -734,6 +724,30 @@
</build> </build>
<profiles> <profiles>
<profile>
<id>product</id>
<activation>
<property>
<name>product</name>
</property>
</activation>
<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>
</dependencies>
</profile>
<profile> <profile>
<id>includeGelf</id> <id>includeGelf</id>
<activation> <activation>

View file

@ -85,8 +85,15 @@ class BuildCommandDistTest {
CLIResult cliResult = (CLIResult) result; CLIResult cliResult = (CLIResult) result;
String dbDriver = Database.getDriver("oracle", true).orElse(""); String dbDriver = Database.getDriver("oracle", true).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)); boolean isProduct = System.getProperty("product") != null;
if (isProduct) {
cliResult.assertError(errorMessage);
cliResult.assertNoBuild(); cliResult.assertNoBuild();
} else {
cliResult.assertNoMessage(errorMessage);
cliResult.assertBuild();
}
} }
} }

View file

@ -186,31 +186,6 @@
</artifactItems> </artifactItems>
</configuration> </configuration>
</execution> </execution>
<execution>
<id>includeProprietaryDependencies</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,5 +338,47 @@
</profile> </profile>
<profile>
<id>product</id>
<activation>
<property>
<name>product</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>includeProprietaryDependencies</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>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles> </profiles>
</project> </project>