Support SigV4 presigned URL verification
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 58/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- aws, rust
- Área
- authentication, backend, security
Línea de trabajo
Lee primero resolve_identity() en auth/identity.rs y parse_sigv4_auth() en auth/sigv4.rs. Traza después la resolución existente de CredentialRegistry y TokenKey, y compara el manejo de la solicitud canónica basado en encabezados con los requisitos del issue. Se considera terminado cuando los parámetros de consulta SigV4 válidos autentican, X-Amz-Signature se excluye de la canonicalización, se usa UNSIGNED-PAYLOAD y se hace cumplir X-Amz-Expires.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Rust
- Estrellas
- 20
- Forks
- 1
- Merge medio
- 1 d 8 h
- PR fusionados (30 d)
- 10
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de developmentseed/multistore
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
developmentseed/multistore#160 ·
Los mantenedores suelen responder en 1 día
-
List of a prefix 503s when a single object key contains an empty path segment (//)Posiblemente ocupada @alukach la tomó hace 93 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 55/100
developmentseed/multistore#116 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
developmentseed/multistore#89 ·
Los mantenedores suelen responder en 1 día
-
oidc-provider: optional `oidc_session_name` backend-option to override RoleSessionName derivationAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
developmentseed/multistore#84 ·
Los mantenedores suelen responder en 1 día
-
Credential cache key (role ARN) doesn't capture the full minted identity (subject + extra_claims)Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
developmentseed/multistore#81 ·
Los mantenedores suelen responder en 1 día
Todos los issues de developmentseed/multistore
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
pedrovgs/UseCaseCoverage#23 ·
-
priority: low
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
storytold/photocraft#8687 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
THREAD: operation failedAbiertoarea:kernel bug kernel-paused needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
bherbruck/solvecraft#5055 · 2 comentarios ·
-
bug cli p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 3 días
-
documentation good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día