From 47793b89300a19c5fd13b781f03dd580fc0186a6 Mon Sep 17 00:00:00 2001 From: Ondrej Dubaj Date: Tue, 18 Jan 2022 14:58:57 +0100 Subject: [PATCH] remove AuthenticationOciClient plugin due to missing oracle dependency --- .../a/NativeAuthenticationProvider.java | 2 - .../AuthenticationOciClient.java | 177 ------------------ .../cj/LocalizedErrorMessages.properties | 6 - 3 files changed, 185 deletions(-) delete mode 100644 src/main/protocol-impl/java/com/mysql/cj/protocol/a/authentication/AuthenticationOciClient.java diff --git a/src/main/protocol-impl/java/com/mysql/cj/protocol/a/NativeAuthenticationProvider.java b/src/main/protocol-impl/java/com/mysql/cj/protocol/a/NativeAuthenticationProvider.java index 0d94061d..58bbf23b 100644 --- a/src/main/protocol-impl/java/com/mysql/cj/protocol/a/NativeAuthenticationProvider.java +++ b/src/main/protocol-impl/java/com/mysql/cj/protocol/a/NativeAuthenticationProvider.java @@ -58,7 +58,6 @@ import com.mysql.cj.protocol.a.NativeConstants.StringSelfDataType; import com.mysql.cj.protocol.a.authentication.AuthenticationFidoClient; import com.mysql.cj.protocol.a.authentication.AuthenticationKerberosClient; import com.mysql.cj.protocol.a.authentication.AuthenticationLdapSaslClientPlugin; -import com.mysql.cj.protocol.a.authentication.AuthenticationOciClient; import com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin; import com.mysql.cj.protocol.a.authentication.MysqlClearPasswordPlugin; import com.mysql.cj.protocol.a.authentication.MysqlNativePasswordPlugin; @@ -256,7 +255,6 @@ public class NativeAuthenticationProvider implements AuthenticationProvider { - public static String PLUGIN_NAME = "authentication_oci_client"; - - private String sourceOfAuthData = PLUGIN_NAME; - - protected Protocol protocol = null; - private MysqlCallbackHandler usernameCallbackHandler = null; - private String fingerprint = null; - private RSAPrivateKey privateKey = null; - - @Override - public void init(Protocol prot, MysqlCallbackHandler cbh) { - this.protocol = prot; - this.usernameCallbackHandler = cbh; - } - - @Override - public void reset() { - this.fingerprint = null; - this.privateKey = null; - } - - @Override - public void destroy() { - reset(); - this.protocol = null; - this.usernameCallbackHandler = null; - } - - @Override - public String getProtocolPluginName() { - return PLUGIN_NAME; - } - - @Override - public boolean requiresConfidentiality() { - return false; - } - - @Override - public boolean isReusable() { - return false; - } - - @Override - public void setAuthenticationParameters(String user, String password) { - if (user == null && this.usernameCallbackHandler != null) { - // Fall back to system login user. - this.usernameCallbackHandler.handle(new UsernameCallback(System.getProperty("user.name"))); - } - } - - @Override - public void setSourceOfAuthData(String sourceOfAuthData) { - this.sourceOfAuthData = sourceOfAuthData; - } - - @Override - public boolean nextAuthenticationStep(NativePacketPayload fromServer, List toServer) { - toServer.clear(); - - if (!this.sourceOfAuthData.equals(PLUGIN_NAME) || fromServer.getPayloadLength() == 0) { - // Cannot do anything with whatever payload comes from the server, so just skip this iteration and wait for a Protocol::AuthSwitchRequest or a - // Protocol::AuthNextFactor. - toServer.add(new NativePacketPayload(0)); - return true; - } - - initializePrivateKey(); - - byte[] nonce = fromServer.readBytes(StringSelfDataType.STRING_EOF); - byte[] signature = ExportControlled.sign(nonce, this.privateKey); - if (signature == null) { - signature = new byte[0]; - } - String payload = String.format("{\"fingerprint\":\"%s\", \"signature\":\"%s\"}", this.fingerprint, Base64.getEncoder().encodeToString(signature)); - toServer.add(new NativePacketPayload(payload.getBytes(Charset.defaultCharset()))); - return true; - } - - private void initializePrivateKey() { - if (this.privateKey != null) { - // Already initialized. - return; - } - - ConfigFile configFile; - try { - String configFilePath = this.protocol.getPropertySet().getStringProperty(PropertyKey.ociConfigFile.getKeyName()).getStringValue(); - if (StringUtils.isNullOrEmpty(configFilePath)) { - configFile = ConfigFileReader.parseDefault(); - } else if (Files.exists(Paths.get(configFilePath))) { - configFile = ConfigFileReader.parse(configFilePath); - } else { - throw ExceptionFactory.createException("configuration file does not exist"); - } - } catch (NoClassDefFoundError e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.SdkNotFound"), e); - } catch (IOException e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.OciConfigFileError"), e); - } - this.fingerprint = configFile.get("fingerprint"); - if (StringUtils.isNullOrEmpty(this.fingerprint)) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.OciConfigFileMissingEntry")); - } - String keyFilePath = configFile.get("key_file"); - if (StringUtils.isNullOrEmpty(keyFilePath)) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.OciConfigFileMissingEntry")); - } - - try { - String key = new String(Files.readAllBytes(Paths.get(keyFilePath)), Charset.defaultCharset()); - this.privateKey = ExportControlled.decodeRSAPrivateKey(key); - } catch (IOException e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.PrivateKeyNotFound"), e); - } catch (RSAException | IllegalArgumentException e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.PrivateKeyNotValid"), e); - } - } -} diff --git a/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties b/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties index e4709a75..d29cdeb3 100644 --- a/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties +++ b/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties @@ -50,12 +50,6 @@ AuthenticationLdapSaslClientPlugin.MissingLdapServerHostname=An LDAP Server host AuthenticationLdapSaslClientPlugin.FailCreateSaslClient=Failed creating a SASL client for the authentication mechanism ''{0}''. AuthenticationLdapSaslClientPlugin.ErrProcessingAuthIter=Error while processing an authentication iteration for the authentication mechanism ''{0}''. -AuthenticationOciClientPlugin.SdkNotFound=The OCI SDK could not be found or is not installed. -AuthenticationOciClientPlugin.OciConfigFileError=OCI configuration file could not be read. -AuthenticationOciClientPlugin.OciConfigFileMissingEntry=OCI configuration file does not contain a ''fingerprint'' or ''key_file'' entry. -AuthenticationOciClientPlugin.PrivateKeyNotFound=Private key could not be found at location given by OCI configuration entry ''key_file''. -AuthenticationOciClientPlugin.PrivateKeyNotValid=OCI configuration entry ''key_file'' does not reference a valid key file. - AuthenticationProvider.BadAuthenticationPlugin=Unable to load authentication plugin ''{0}''. AuthenticationProvider.BadDefaultAuthenticationPlugin=Improper value "{0}" for property ''defaultAuthenticationPlugin''. AuthenticationProvider.DefaultAuthenticationPluginIsNotListed=Default authentication plugin "{0}" is neither one of the built-in plugins nor one of the plugins listed in ''authenticationPlugins''. -- 2.35.1