Projects
openEuler:24.03:SP1:Everything:64G
mysql-connector-java
_service:tar_scm:remove-authentication-plugin.p...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:remove-authentication-plugin.patch of Package mysql-connector-java
From 47793b89300a19c5fd13b781f03dd580fc0186a6 Mon Sep 17 00:00:00 2001 From: Ondrej Dubaj <odubaj@redhat.com> 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 | 218 ------------------ .../cj/LocalizedErrorMessages.properties | 12 - 3 files changed, 232 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 b9a8ca6..3d5f145 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; @@ -257,7 +256,6 @@ public class NativeAuthenticationProvider implements AuthenticationProvider<Nati pluginsToInit.add(new MysqlOldPasswordPlugin()); pluginsToInit.add(new AuthenticationLdapSaslClientPlugin()); pluginsToInit.add(new AuthenticationKerberosClient()); - pluginsToInit.add(new AuthenticationOciClient()); pluginsToInit.add(new AuthenticationFidoClient()); // plugins from authenticationPluginClasses connection parameter diff --git a/src/main/protocol-impl/java/com/mysql/cj/protocol/a/authentication/AuthenticationOciClient.java b/src/main/protocol-impl/java/com/mysql/cj/protocol/a/authentication/AuthenticationOciClient.java deleted file mode 100644 index 4fe5d32..0000000 --- a/src/main/protocol-impl/java/com/mysql/cj/protocol/a/authentication/AuthenticationOciClient.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Copyright (c) 2021, 2022, Oracle and/or its affiliates. - * - * This program is free software; you can redistribute it and/or modify it under - * the terms of the GNU General Public License, version 2.0, as published by the - * Free Software Foundation. - * - * This program is also distributed with certain software (including but not - * limited to OpenSSL) that is licensed under separate terms, as designated in a - * particular file or component or in included license documentation. The - * authors of MySQL hereby grant you an additional permission to link the - * program and your derivative works with the separately licensed software that - * they have included with MySQL. - * - * Without limiting anything contained in the foregoing, this file, which is - * part of MySQL Connector/J, is also subject to the Universal FOSS Exception, - * version 1.0, a copy of which can be found at - * http://oss.oracle.com/licenses/universal-foss-exception. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License, version 2.0, - * for more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -package com.mysql.cj.protocol.a.authentication; - -import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.security.interfaces.RSAPrivateKey; -import java.util.Base64; -import java.util.List; - -import com.mysql.cj.Messages; -import com.mysql.cj.callback.MysqlCallbackHandler; -import com.mysql.cj.callback.UsernameCallback; -import com.mysql.cj.conf.PropertyKey; -import com.mysql.cj.exceptions.ExceptionFactory; -import com.mysql.cj.exceptions.RSAException; -import com.mysql.cj.protocol.AuthenticationPlugin; -import com.mysql.cj.protocol.ExportControlled; -import com.mysql.cj.protocol.Protocol; -import com.mysql.cj.protocol.a.NativeConstants.StringSelfDataType; -import com.mysql.cj.protocol.a.NativePacketPayload; -import com.mysql.cj.util.StringUtils; -import com.oracle.bmc.ConfigFileReader; -import com.oracle.bmc.ConfigFileReader.ConfigFile; - -/** - * MySQL 'authentication_iam_client' authentication plugin. - */ -public class AuthenticationOciClient implements AuthenticationPlugin<NativePacketPayload> { - public static String PLUGIN_NAME = "authentication_oci_client"; - - private String sourceOfAuthData = PLUGIN_NAME; - - protected Protocol<NativePacketPayload> protocol = null; - private MysqlCallbackHandler usernameCallbackHandler = null; - private String configFingerprint = null; - private String configKeyFile = null; - private String configSecurityTokenFile = null; - private RSAPrivateKey privateKey = null; - private byte[] token = null; - - @Override - public void init(Protocol<NativePacketPayload> prot, MysqlCallbackHandler cbh) { - this.protocol = prot; - this.usernameCallbackHandler = cbh; - } - - @Override - public void reset() { - this.configFingerprint = 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<NativePacketPayload> 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; - } - - loadOciConfig(); - initializePrivateKey(); - initializeToken(); - - 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\", \"token\":\"%s\"}", this.configFingerprint, - Base64.getEncoder().encodeToString(signature), new String(this.token)); - toServer.add(new NativePacketPayload(payload.getBytes(Charset.defaultCharset()))); - return true; - } - - private void loadOciConfig() { - ConfigFile configFile; - try { - String configFilePath = this.protocol.getPropertySet().getStringProperty(PropertyKey.ociConfigFile.getKeyName()).getStringValue(); - String configProfile = this.protocol.getPropertySet().getStringProperty(PropertyKey.ociConfigProfile.getKeyName()).getStringValue(); - if (StringUtils.isNullOrEmpty(configFilePath)) { - configFile = ConfigFileReader.parseDefault(configProfile); - } else if (Files.exists(Paths.get(configFilePath))) { - configFile = ConfigFileReader.parse(configFilePath, configProfile); - } else { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.ConfigFileNotFound")); - } - } catch (NoClassDefFoundError e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.OciSdkNotFound"), e); - } catch (IOException e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.OciConfigFileError"), e); - } catch (IllegalArgumentException e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.ProfileNotFound"), e); - } - - this.configFingerprint = configFile.get("fingerprint"); - if (StringUtils.isNullOrEmpty(this.configFingerprint)) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.OciConfigFileMissingEntry")); - } - this.configKeyFile = configFile.get("key_file"); - if (StringUtils.isNullOrEmpty(this.configKeyFile)) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.OciConfigFileMissingEntry")); - } - this.configSecurityTokenFile = configFile.get("security_token_file"); - } - - private void initializePrivateKey() { - if (this.privateKey != null) { - // Already initialized. - return; - } - try { - Path keyFilePath = Paths.get(this.configKeyFile); - if (Files.notExists(keyFilePath)) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.PrivateKeyNotFound")); - } - String key = new String(Files.readAllBytes(keyFilePath)); - this.privateKey = ExportControlled.decodeRSAPrivateKey(key); - } catch (IOException e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.FailedReadingPrivateKey"), e); - } catch (RSAException | IllegalArgumentException e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.PrivateKeyNotValid"), e); - } - } - - private void initializeToken() { - if (this.token != null) { - // Already initialized. - return; - } - if (StringUtils.isNullOrEmpty(this.configSecurityTokenFile)) { - this.token = new byte[0]; - return; - } - try { - Path securityTokenFilePath = Paths.get(this.configSecurityTokenFile); - if (Files.notExists(securityTokenFilePath)) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.SecurityTokenFileNotFound")); - } - long size = Files.size(securityTokenFilePath); - if (size > 10240) { // Fail if above 10KB. - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.SecurityTokenTooBig")); - } - this.token = Files.readAllBytes(Paths.get(this.configSecurityTokenFile)); - } catch (IOException e) { - throw ExceptionFactory.createException(Messages.getString("AuthenticationOciClientPlugin.FailedReadingSecurityTokenFile"), e); - } - } -} diff --git a/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties b/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties index 786c4cc..6268362 100644 --- a/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties +++ b/src/main/resources/com/mysql/cj/LocalizedErrorMessages.properties @@ -49,18 +49,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.ConfigFileNotFound=OCI configuration file not found. -AuthenticationOciClientPlugin.OciSdkNotFound=The OCI SDK cannot be found or it is not installed. -AuthenticationOciClientPlugin.OciConfigFileError=The OCI configuration file cannot be read. -AuthenticationOciClientPlugin.ProfileNotFound=The specified profile is not found in the OCI configuration file. -AuthenticationOciClientPlugin.OciConfigFileMissingEntry=The OCI configuration file does not contain a ''fingerprint'' or ''key_file'' entry. -AuthenticationOciClientPlugin.PrivateKeyNotFound=The private key cannot be found at the location referenced in the OCI configuration entry ''key_file''. -AuthenticationOciClientPlugin.FailedReadingPrivateKey=Failed reading the private key file referenced in the OCI configuration entry ''key_file''. -AuthenticationOciClientPlugin.PrivateKeyNotValid=The OCI configuration entry ''key_file'' does not reference a valid key file. -AuthenticationOciClientPlugin.SecurityTokenFileNotFound=The security token file cannot be found at the location referenced in the OCI configuration entry ''security_token_file''. -AuthenticationOciClientPlugin.SecurityTokenTooBig=Invalid security token file. File size above 10 KB. -AuthenticationOciClientPlugin.FailedReadingSecurityTokenFile=Failed reading the security token file referenced in the OCI configuration entry ''security_token_file''. - 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''. AuthenticationProvider.BadDisabledAuthenticationPlugin=Can''t disable the default authentication plugin. Either remove "{0}" from the disabled authentication plugins list, or choose a different default authentication plugin. -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2