aws-toolkit-jetbrains icon indicating copy to clipboard operation
aws-toolkit-jetbrains copied to clipboard

credentials validation rejecting AWS generated secret key

Open boomerstan opened this issue 3 years ago • 3 comments

Describe the bug

The plugin is rejecting an aws_secret_access_key that contains special characters +/

To reproduce

With a correct and working AWSCLI configuration and a fresh install of PyCharm. Install AWS Toolkit. See Problem: AWS: No Credentials Selected Click Problem then click Edit AWS Credential file(s) Type into ~/.aws/config editor: line4 > aws_access_key_id=MYACCESSKEY line5 > aws_secret_access_key=MySecretAccessKeyWithNumbersAnd+/chars Click Save See dialog IDE Error occurred

Expected behavior

I would expect that the plugin would validate an AWS generated aws_secret_access_key.

Screenshots

Your Environment

  • OS: MacOS 11.6.5
  • JetBrains product: PyCharm (Professional Edition)
  • JetBrains product version: 2022.1.1
  • Build #PY-221.5591.52, built on May 10, 2022
  • Runtime version: 11.0.14.1+1-b2043.45 x86_64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
  • AWS Toolkit version: 1.43-221
  • SAM CLI version: 1.50.0
  • JVM/Python version: 3.9

Additional context

I expect that this is related to issue 1010 stacktrace.txt java.lang.IllegalArgumentException: Expected an '=' sign defining a property on line 5 at software.amazon.awssdk.utils.Validate.isTrue(Validate.java:76) at software.amazon.awssdk.profiles.internal.ProfileFileReader.parsePropertyDefinition(ProfileFileReader.java:250) at software.amazon.awssdk.profiles.internal.ProfileFileReader.readPropertyDefinitionLine(ProfileFileReader.java:132) at software.amazon.awssdk.profiles.internal.ProfileFileReader.parseLine(ProfileFileReader.java:78) at software.amazon.awssdk.profiles.internal.ProfileFileReader.lambda$parseFile$0(ProfileFileReader.java:58) at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133) at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658) at software.amazon.awssdk.profiles.internal.ProfileFileReader.parseFile(ProfileFileReader.java:58) at software.amazon.awssdk.profiles.ProfileFile$BuilderImpl.build(ProfileFile.java:266) at software.amazon.awssdk.profiles.ProfileFile.lambda$addCredentialsFile$0(ProfileFile.java:142) at java.base/java.util.Optional.ifPresent(Optional.java:183) at software.amazon.awssdk.profiles.ProfileFile.addCredentialsFile(ProfileFile.java:139) at software.amazon.awssdk.utils.builder.SdkBuilder.applyMutation(SdkBuilder.java:61) at software.amazon.awssdk.profiles.ProfileFile.defaultProfileFile(ProfileFile.java:90) at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.mergeGlobalDefaults(SdkDefaultClientBuilder.java:253) at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.syncClientConfiguration(SdkDefaultClientBuilder.java:169) at software.amazon.awssdk.services.cognitoidentity.DefaultCognitoIdentityClientBuilder.buildClient(DefaultCognitoIdentityClientBuilder.java:29) at software.amazon.awssdk.services.cognitoidentity.DefaultCognitoIdentityClientBuilder.buildClient(DefaultCognitoIdentityClientBuilder.java:22) at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.build(SdkDefaultClientBuilder.java:140) at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryPublisher$Companion.createDefaultTelemetryClient(DefaultTelemetryPublisher.kt:109) at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryPublisher$Companion.access$createDefaultTelemetryClient(DefaultTelemetryPublisher.kt:94) at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryPublisher.(DefaultTelemetryPublisher.kt:24) at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion$publisher$2.invoke(TelemetryService.kt:133) at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion$publisher$2.invoke(TelemetryService.kt:133) at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74) at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion.getPublisher(TelemetryService.kt:133) at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService$Companion.access$getPublisher(TelemetryService.kt:132) at software.aws.toolkits.jetbrains.services.telemetry.DefaultTelemetryService.(TelemetryService.kt:130) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at com.intellij.serviceContainer.ConstructorInjectionKt.instantiateUsingPicoContainer(constructorInjection.kt:47) at com.intellij.serviceContainer.ComponentManagerImpl.instantiateClassWithConstructorInjection(ComponentManagerImpl.kt:891) at com.intellij.serviceContainer.ServiceComponentAdapter.createAndInitialize(ServiceComponentAdapter.kt:51) at com.intellij.serviceContainer.ServiceComponentAdapter.doCreateInstance(ServiceComponentAdapter.kt:41) at com.intellij.serviceContainer.BaseComponentAdapter.getInstanceUncached(BaseComponentAdapter.kt:119) at com.intellij.serviceContainer.BaseComponentAdapter.getInstance(BaseComponentAdapter.kt:73) at com.intellij.serviceContainer.BaseComponentAdapter.getInstance$default(BaseComponentAdapter.kt:66) at com.intellij.serviceContainer.ComponentManagerImpl.doGetService(ComponentManagerImpl.kt:610) at com.intellij.serviceContainer.ComponentManagerImpl.getService(ComponentManagerImpl.kt:584) at com.intellij.openapi.client.ClientAwareComponentManager.getFromSelfOrCurrentSession(ClientAwareComponentManager.kt:37) at com.intellij.openapi.client.ClientAwareComponentManager.getService(ClientAwareComponentManager.kt:22) at software.aws.toolkits.jetbrains.services.telemetry.TelemetryService$Companion.getInstance(TelemetryService.kt:139) at software.aws.toolkits.telemetry.AwsTelemetry.saveCredentials(TelemetryDefinitions.kt:2969) at software.aws.toolkits.telemetry.AwsTelemetry.saveCredentials$default(TelemetryDefinitions.kt:2963) at software.aws.toolkits.jetbrains.core.credentials.CredentialsFileHelpNotificationProvider$CredentialFileNotificationPanel.init$lambda-0(CredentialsFileHelpNotificationProvider.kt:42) at com.intellij.ui.EditorNotificationPanel$2.handlePanelActionClick(EditorNotificationPanel.java:297) at com.intellij.ui.EditorNotificationPanel$ActionHyperlinkLabel$1.hyperlinkActivated(EditorNotificationPanel.java:342) at com.intellij.ui.HyperlinkAdapter.hyperlinkUpdate(HyperlinkAdapter.java:11) at com.intellij.ui.HyperlinkLabel.fireHyperlinkEvent(HyperlinkLabel.java:240) at com.intellij.ui.HyperlinkLabel.processMouseEvent(HyperlinkLabel.java:162) at java.desktop/java.awt.Component.processEvent(Component.java:6419) at java.desktop/java.awt.Container.processEvent(Container.java:2263) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5029) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2793) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:748) at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:898) at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:820) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:743) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:439) at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:803) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:438) at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:119) at com.intellij.ide.IdeEventQueue.performActivity(IdeEventQueue.java:604) at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:436) at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:873) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:484) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

boomerstan avatar May 19 '22 16:05 boomerstan

Is there a more specific example you could provide? I am unable to reproduce this. image

However, putting Unicode whitespace in the file does seem to trigger an error image

rli avatar May 20 '22 18:05 rli

Well I'm not going to post my secret key. If that's not the issue then a better error message would help. java.lang.IllegalArgumentException: Expected an '=' sign defining a property on line 5

boomerstan avatar May 25 '22 17:05 boomerstan

I cut an issue to the Java SDK, but can you also confirm that the = on line 5 is actually an ASCII 'equals' (0x3d) and not a Unicode character that looks like an equals sign?

rli avatar May 25 '22 22:05 rli