
Authentication
Authentication and Credentials
SigV4 and multi-bucket auth
Each virtual bucket has one or more credential sets. On every request, the orchestrator:
- Extracts the access key from the SigV4
Authorizationheader, presigned URL query parameters, or token fromX-Proxy-Token. - Looks up which bucket the credential belongs to.
- Verifies the signature (SigV4 header or presigned query parameters) or token.
- Validates the URL path bucket matches the authorized bucket.
Three auth methods are supported, checked in order:
- AWS SigV4 (recommended) - Standard AWS Signature Version 4 via the
Authorizationheader. Compatible withaws cli, SDKs, and any S3 client. Signature verification is constant-time: unknown access keys still compute a full HMAC to prevent timing side-channel enumeration. Streaming-payload uploads (STREAMING-AWS4-HMAC-SHA256-PAYLOAD,STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER,STREAMING-UNSIGNED-PAYLOAD-TRAILER) are accepted and the chunk chain is fully validated end-to-end. - Presigned URLs - SigV4 query-parameter authentication (
X-Amz-Algorithm,X-Amz-Credential, etc.) for time-limited, shareable URLs. Works with any AWS SDK presign client. Maximum expiry: 7 days. Uses the same bucket credentials as normal requests — no additional configuration required. - Legacy token - Simple
X-Proxy-Tokenheader for backward compatibility.
Multiple services can share a bucket by each having their own credentials that all map to the same bucket name. Access key IDs must be globally unique across all buckets.
Authentication is always required — every bucket must have at least one credential set.
For client usage examples (AWS CLI, rclone, boto3, Go SDK), see the User Guide. For credential rotation procedures, see docs/operations.md.
Bucket configuration
Each bucket defines a virtual namespace with one or more credential sets.
Generating credentials: Use openssl rand to produce random keys:
Validation rules:
- Bucket names must not contain
/. - Bucket names must be unique across the config.
- Access key IDs must be globally unique across all buckets.
- Each bucket must have at least one credential set.
- Each credential needs either
access_key_id+secret_access_key(SigV4) ortoken(legacy).
Multiple credentials on the same bucket let different services share a namespace with independent keys. This is useful when you want a writer service and a reader service accessing the same files.
SigV4 credentials also support presigned URLs automatically. Clients can generate time-limited presigned URLs using any AWS SDK presign client — no additional configuration is needed on the orchestrator side.