Files
4a0c147c50 fix(storage): support GCS S3 XML API signing (MUL-8232) (#9513)
* fix(storage): omit unsigned headers from SigV4 to support GCS S3 XML API

Google Cloud Storage through its S3-compatible XML API mutates the
Accept-Encoding request header in transit (identity -> identity,gzip(gfe)).
Because aws-sdk-go-v2 signs Accept-Encoding into SignedHeaders by default,
this mutation causes HTTP 403 SignatureDoesNotMatch on storage calls.

This commit:
- Automatically excludes accept-encoding from SigV4 signing when
  AWS_ENDPOINT_URL points to Google Cloud Storage (storage.googleapis.com).
- Adds S3_UNSIGNED_HEADERS to configure additional unsigned headers,
  preserving accept-encoding when targeting GCS.
- Strips unsigned headers prior to SigV4 signing while restoring captured
  headers (including Accept-Encoding: identity) on the wire via an HTTP
  client wrapper.
- Documents S3_UNSIGNED_HEADERS across all 5 documentation translations
  (en, zh, ja, ko, fr) with an integrity protection note.
- Adds regression tests for SigV4 omission, wire transmission, and presigned
  X-Amz-SignedHeaders.

Closes #9509

* fix(storage): scope GCS signing workaround to Accept-Encoding (MUL-8232)

Co-authored-by: multica-agent <[email protected]>

---------

Co-authored-by: Sol-Boy <[email protected]>
Co-authored-by: multica-agent <[email protected]>
2026-10-28 17:02:10 +08:00

82 lines
3.3 KiB
AMPL

module github.com/multica-ai/multica/server
go 1.26.9
require (
github.com/aws/aws-sdk-go-v2 v1.47.0
github.com/aws/aws-sdk-go-v2/config v1.33.4
github.com/aws/aws-sdk-go-v2/credentials v1.20.4
github.com/aws/aws-sdk-go-v2/service/s3 v1.113.0
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.49.0
github.com/aws/smithy-go v1.28.1
github.com/go-chi/chi/v5 v5.3.2
github.com/go-chi/cors v1.2.2
github.com/go-redis/redismock/v9 v9.2.0
github.com/go-resty/resty/v2 v2.17.2
github.com/golang-jwt/jwt/v5 v5.3.1
github.com/google/uuid v1.6.0
github.com/gorilla/websocket v1.5.3
github.com/jackc/pgx/v5 v5.11.0
github.com/lmittmann/tint v1.2.0
github.com/mattn/go-shellwords v1.0.14
github.com/oklog/ulid/v2 v2.1.2
github.com/openai/openai-go/v3 v3.61.0
github.com/pelletier/go-toml/v2 v2.4.3
github.com/prometheus/client_golang v1.24.1
github.com/prometheus/client_model v0.6.3
github.com/redis/go-redis/v9 v9.22.0
github.com/resend/resend-go/v2 v2.28.0
github.com/robfig/cron/v3 v3.0.1
github.com/slack-go/slack v0.29.0
github.com/spf13/cobra v1.10.2
github.com/spf13/pflag v1.0.10
github.com/tdewolff/parse/v2 v2.8.16
github.com/yuin/goldmark v1.8.6
golang.org/x/net v0.62.0
golang.org/x/sync v0.24.0
golang.org/x/sys v0.49.0
google.golang.org/protobuf v1.36.12
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gopkg.in/yaml.v3 v3.0.1
)
require (
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.20 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.20.0 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.5.3 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.8.3 // indirect
github.com/aws/aws-sdk-go-v2/internal/v4a v1.5.3 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.19 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.11.3 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.14.3 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.20.3 // indirect
github.com/aws/aws-sdk-go-v2/service/signin v1.10.0 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.38.0 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.43.0 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.50.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/prometheus/common v0.71.0 // indirect
github.com/prometheus/procfs v0.22.0 // indirect
github.com/rogpeppe/go-internal v1.16.0 // indirect
github.com/tidwall/gjson v1.19.0 // indirect
github.com/tidwall/match v1.2.0 // indirect
github.com/tidwall/pretty v1.2.1 // indirect
github.com/tidwall/sjson v1.2.5 // indirect
go.uber.org/atomic v1.11.0 // indirect
golang.org/x/mod v0.41.0 // indirect
golang.org/x/telemetry v0.0.0-20260924152758-ed294f943157 // indirect
golang.org/x/text v0.43.0 // indirect
golang.org/x/tools v0.51.0 // indirect
golang.org/x/vuln v1.8.0 // indirect
)
tool golang.org/x/vuln/cmd/govulncheck