[ https://issues.jenkins-ci.org/browse/JENKINS-13531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
> Plugin replacing "+" with " " in configuration strings when plugin is > instantiated. > ----------------------------------------------------------------------------------- > > Key: JENKINS-13531 > URL: https://issues.jenkins-ci.org/browse/JENKINS-13531 > Project: Jenkins > Issue Type: Bug > Components: core, plugin > Affects Versions: current > Environment: RedHat Linux and Mac OS X Lion > Reporter: glimberg > Labels: configuration, plugins, url-encoding > > I've been experimenting with the Amazon S3 Publisher plugin in Jenkins 1.460 > in preparation for starting to use S3 for artifact storage & program > distribution at work. I kept getting errors with the S3 plugin, however, > stating "Can't connect to S3 service: The request signature we calculated > does not match the signature you provided. Check your key and signing > method." > The Access & Secret Keys were correct and being stored correctly in the > hudson.plugins.s3.S3BucketPublisher.xml configuration file. I added some > logging to the plugin to discover that in > S3BucketPublisher.DescriptorImpl.doLoginCheck(), the "secretKey" element of > the StaplerRequest parameter was being returned incorrectly. There's a "+" > character in the secret key. The plus was being turn into a space (" "), > thus the plugin is unable to connect to S3. > The issue first appears with Jenkins & the S3 Publisher plugin in Jenkins > 1.455 and continues through 1.460. Versions 1.454 and prior behave as > expected. The "+" in the secret key is retained and connection to S3 is > possible. Nothing has changed in the S3 plugin in that time period, so the > issue must be somewhere inside Jenkins itself. Unfortunately, I'm rather > unfamiliar with the Jenkins architecture and plugin architecture an am unable > to trace the issue further down the chain than that. > To recreate the issue: > 1) get the S3 plugin (https://github.com/jenkinsci/s3-plugin) > 2) set the jenkins version on line 6 of pom.xml to 1.455 or greater. > 3) in "Configure System", add an S3 profile. Valid or not does not matter. > Make sure there's a "+" in the secret key or the access key field. > 4) Set a breakpoint, or print out the value of req.getParameter("secretKey") > in S3BucketPublisher.DescriptorImpl.doLoginCheck(). See that the "+" has > been turned into a " ". > The strange thing is that if you look in the actual form fields secretKey or > accessKey, the + will be in there correctly. Somehow it's not getting to the > actual plugin code as a +, though. > Workarounds: > None known at this time. > I attempted to replace the + with its URLEncoded form "%2B" in the > configuration file, but "%2B" comes through instead of being decoded into a +. > The only hack I have to get it working for us at the office for the time > being is to replace all instances of " " in the secretKey with "+". Not a > good solution. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jenkins-ci.org/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira