Support SigV4 presigned URL verification
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 58/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- aws, rust
- Ambito
- authentication, backend, security
Direzione di ricerca
Leggi prima resolve_identity() in auth/identity.rs e parse_sigv4_auth() in auth/sigv4.rs. Traccia quindi la risoluzione esistente di CredentialRegistry e TokenKey, poi confronta la gestione della richiesta canonica basata sugli header con i requisiti dell’issue. Il lavoro è completato quando parametri di query SigV4 validi eseguono l’autenticazione, X-Amz-Signature è escluso dalla canonicalizzazione, viene usato UNSIGNED-PAYLOAD e X-Amz-Expires viene fatto rispettare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The auth module only supports header-based SigV4 authentication (the Authorization header). When no Authorization header is present, the request is treated as anonymous.
AWS S3 presigned URLs encode the signature in query parameters instead:
X-Amz-AlgorithmX-Amz-CredentialX-Amz-DateX-Amz-ExpiresX-Amz-SignedHeadersX-Amz-SignatureX-Amz-Security-Token(for temporary credentials)
Currently these are ignored, so presigned URLs generated with STS credentials are treated as anonymous requests.
Why it matters
Presigned URLs are commonly used for:
- Direct
<img>/<a>tags in browsers (can't setAuthorizationheader) - Sharing time-limited download links for restricted data
- Any context where the HTTP client can't set custom headers
Without this, the STS credential flow only works for SDK-based requests that set the Authorization header.
What needs to change
-
resolve_identity()inauth/identity.rs— when theAuthorizationheader is absent, check query parameters forX-Amz-Algorithm=AWS4-HMAC-SHA256before falling back to anonymous. -
parse_sigv4_auth()inauth/sigv4.rs— add a parallel code path (or new function) to extract credential, signed headers, and signature from query parameters instead of the header. -
Signature verification — presigned URL canonical requests differ from header-based ones:
- The
X-Amz-Signatureparameter is excluded from the canonical query string - The payload hash is always
UNSIGNED-PAYLOAD - Expiration (
X-Amz-Expires) must be validated
- The
-
Credential resolution — the existing
CredentialRegistry+TokenKeyresolver should work as-is once the access key is extracted from the query string.
References
- Lingua principale
- Rust
- Stelle
- 20
- Fork
- 1
- Merge medio
- 1g 8h
- PR unite (30g)
- 10
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di developmentseed/multistore
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
developmentseed/multistore#160 ·
I maintainer di solito rispondono entro 1 giorno
-
List of a prefix 503s when a single object key contains an empty path segment (//)Forse già presa @alukach l’ha presa 97 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 55/100
developmentseed/multistore#116 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
developmentseed/multistore#89 ·
I maintainer di solito rispondono entro 1 giorno
-
oidc-provider: optional `oidc_session_name` backend-option to override RoleSessionName derivationAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 35/100
developmentseed/multistore#84 ·
I maintainer di solito rispondono entro 1 giorno
-
Credential cache key (role ARN) doesn't capture the full minted identity (subject + extra_claims)Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
developmentseed/multistore#81 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di developmentseed/multistore
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
manuscript-lang/manuscript#1629 ·
I maintainer di solito rispondono entro 1 giorno
-
autofixer: follow-up
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
tursodatabase/turso#10885 ·
I maintainer di solito rispondono entro 1 giorno
-
🐞 bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
nannou-org/gantz#475 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno