diff --git a/ojdbc-provider-oci/src/main/java/oracle/jdbc/provider/oci/authentication/AuthenticationDetailsFactory.java b/ojdbc-provider-oci/src/main/java/oracle/jdbc/provider/oci/authentication/AuthenticationDetailsFactory.java
index 2bafbee5..5216bda7 100644
--- a/ojdbc-provider-oci/src/main/java/oracle/jdbc/provider/oci/authentication/AuthenticationDetailsFactory.java
+++ b/ojdbc-provider-oci/src/main/java/oracle/jdbc/provider/oci/authentication/AuthenticationDetailsFactory.java
@@ -239,23 +239,24 @@ private static AbstractAuthenticationDetailsProvider getAuthenticationDetails(
* Returns authentication details using the following API key-based
* methods:
*
- * - Simple authentication: if any of the credentials, including tenant ID
- * , user ID, fingerprint, private key, or passphrase, are provided in
- * the given {@code parameters}
+ * - Simple authentication: if all required credentials (tenant ID,
+ * user ID, fingerprint, and private key are provided in the given
+ * {@code parameters}
* - Config File (API key) authentication: otherwise
*
* @return API key-based authentication details
*/
private static AuthenticationDetailsProvider
apiKeyBasedAuthentication(ParameterSet parameters) {
- if (parameters.contains(TENANT_ID)
- || parameters.contains(USER_ID)
- || parameters.contains(FINGERPRINT)
- || parameters.contains(PRIVATE_KEY)
- || parameters.contains(PASS_PHRASE)
- || parameters.contains(REGION)) {
+ boolean hasAllRequiredKeys =
+ parameters.contains(TENANT_ID)
+ && parameters.contains(USER_ID)
+ && parameters.contains(FINGERPRINT)
+ && parameters.contains(PRIVATE_KEY);
+
+ if(hasAllRequiredKeys)
return simpleAuthentication(parameters);
- }
+
return configFileAuthentication(parameters);
}
diff --git a/ojdbc-provider-oci/src/test/java/oracle/jdbc/provider/oci/AuthenticationDetailsFactoryTest.java b/ojdbc-provider-oci/src/test/java/oracle/jdbc/provider/oci/AuthenticationDetailsFactoryTest.java
index 8e336f57..969872de 100644
--- a/ojdbc-provider-oci/src/test/java/oracle/jdbc/provider/oci/AuthenticationDetailsFactoryTest.java
+++ b/ojdbc-provider-oci/src/test/java/oracle/jdbc/provider/oci/AuthenticationDetailsFactoryTest.java
@@ -72,6 +72,17 @@ public void testConfigFile() {
.build());
}
+ /**
+ * Verifies partial API_KEY credentials fallback to config file.
+ */
+ @Test
+ public void testApiKeyPartialCredentials() {
+ verifyAuthenticationDetails(
+ buildParameterSet(AuthenticationMethod.API_KEY)
+ .add("Test OCI_USER", AuthenticationDetailsFactory.USER_ID, "dummy-user-id")
+ .build());
+ }
+
/**
* Verifies {@link AuthenticationMethod#CLOUD_SHELL}
*/