Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Support SigV4 presigned URL verification

Abierto
#39 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@alukach ya está trabajando en esto.

Desde el 22/7/2026.

  • #125 de @alukach — abierto

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

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-Algorithm
  • X-Amz-Credential
  • X-Amz-Date
  • X-Amz-Expires
  • X-Amz-SignedHeaders
  • X-Amz-Signature
  • X-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 set Authorization header)
  • 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

  1. resolve_identity() in auth/identity.rs — when the Authorization header is absent, check query parameters for X-Amz-Algorithm=AWS4-HMAC-SHA256 before falling back to anonymous.

  2. parse_sigv4_auth() in auth/sigv4.rs — add a parallel code path (or new function) to extract credential, signed headers, and signature from query parameters instead of the header.

  3. Signature verification — presigned URL canonical requests differ from header-based ones:

    • The X-Amz-Signature parameter is excluded from the canonical query string
    • The payload hash is always UNSIGNED-PAYLOAD
    • Expiration (X-Amz-Expires) must be validated
  4. Credential resolution — the existing CredentialRegistry + TokenKey resolver 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

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de developmentseed/multistore

Todos los issues de developmentseed/multistore

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.