rclone/gofakes3

signature error with cyberduck

KevinWang15 opened this issue · 4 comments

  1. set up rclone serve s3 with accessKey & secretKey
➜  ~ rclone --version
rclone v1.67.0
- os/version: darwin 14.5 (64 bit)
- os/kernel: 23.5.0 (arm64)
- os/type: darwin
- os/arch: arm64 (ARMv8 compatible)
- go/version: go1.22.4
- go/linking: dynamic
- go/tags: none
➜  ~ cat ~/.config/rclone/rclone.conf

[local]
type = local
➜  ~ rclone serve s3 --auth-key aaaa,ssss local:/
2024/07/06 01:39:51 NOTICE: Local file system at /: Starting s3 server on [http://127.0.0.1:8080/]
  1. Open Cyberduck, and install theS3 (HTTP) profile in Cyberduck
image
  1. Configure it (I'm sure I have entered the correct accessKey and secretKey)
image
  1. Connect. List bucket works fine
image
  1. Listing files in a bucket would fail with signature error
image

P.S. using rclone to connect to this S3 server works fine.


cc @ncw

ncw commented

Does cyberduck have a debugging log you could show?

Do you know which version of auth cyberduck is using?

Can you run rclone serve s3 with --dump bodies and -vv and post the log of it failing.

Thanks

Does cyberduck have a debugging log you could show?

Do you know which version of auth cyberduck is using?

Can you run rclone serve s3 with --dump bodies and -vv and post the log of it failing.

Thanks

Hi @ncw

cyberduck uses V4 auth.
I checked its log, it doesn't have much detail about how the signature was calculated (like what the canonicalRequest was).

But I found the solution! (just several minutes ago - what a coincidence)

This fork https://github.com/alist-org/gofakes3 has the code required to make cyberduck V4 auth work (alist-org@5799d51).

I'm trying to contact the author of this fix as well (alist-org#1 (comment)) cc @itsHenry35

This problem could get fixed soon! 👍👍👍

Does cyberduck have a debugging log you could show?
Do you know which version of auth cyberduck is using?
Can you run rclone serve s3 with --dump bodies and -vv and post the log of it failing.
Thanks

Hi @ncw

cyberduck uses V4 auth. I checked its log, it doesn't have much detail about how the signature was calculated (like what the canonicalRequest was).

But I found the solution! (just several minutes ago - what a coincidence)

This fork https://github.com/alist-org/gofakes3 has the code required to make cyberduck V4 auth work (alist-org@5799d51).

I'm trying to contact the author of this fix as well (alist-org#1 (comment)) cc @itsHenry35

This problem could get fixed soon! 👍👍👍

Got it, I will try to submit a PR by tomorrow😊

Root cause of this is the wrong ordering of query params.

- req.URL.RawQuery
+ req.URL.Query().Encode() // this ensures the correct ordering

Happy to see it fixed in #6