Qué hace este calculador de firmas HTTP
"La firma de solicitud que calculado no coincide con la firma que proporcionó" es uno de los errores más frustrantes en el trabajo de la API, porque el servidor nunca le dice * que * paso salió mal. Esta calculadora reproduce todo el proceso de firma para AWS Signature Version 4, Alibaba Cloud ACS3-HMAC-SHA256, Tencent Cloud TC3-HMAC-SHA256 y OAuth 1.0a HMAC-SHA1, y muestra todos los valores intermedios: la solicitud canónica, su hash, la cadena para firmar, la clave de firma derivada y la firma final y los encabezados. También verifica las firmas de webhook entrantes de GitHub, Stripe y Slack. Toda la criptografía utiliza la API Web Crypto del navegador, por lo que sus claves secretas permanecen en su dispositivo.
Cómo usarlo
- Escoge la cuenta del proveedor.
- Introduzca el método, la URL, los encabezados (una
Name: valuepor línea) y el cuerpo exactamente como su código los envía. - Introducir la clave de acceso, la clave secreta y, en su caso, la región y el servicio. Haga clic en Usar la hora actual o fije una marca de tiempo fija para comparar con una solicitud capturada.
- Compare cada paso con lo que su SDK o registro de código. El primer paso que difiere es dónde está el insecto.
- Para webhooks, pegue el cuerpo de la solicitud en bruto byte por byte, el encabezado de la firma y su secreto de firma, y la herramienta le dice si coincide.
Causas comunes de las discrepancias de la firma
- Codificación de URI canónica: AWS codifica cada segmento de ruta; S3 no codifica de forma doble.
- ** Ordenamiento de la consulta:** Los parámetros deben ordenarse por clave codificada, y los valores vacíos aún necesitan
=. - ** Cabeceras firmadas:** Los nombres de las cabeceras están en minúsculas, recortadas, ordenadas y unidas con
;. Olvidarhostox-amz-datees común. - Hash de carga útil: S3 requiere el encabezado
x-amz-content-sha256; otros servicios solo hashan el cuerpo. - Disparidad del reloj: la mayoría de los proveedores rechazan solicitudes con más de 515 minutos de diferencia.
- ** Webhooks: ** los frameworks a menudo analizan y vuelven a serializar JSON antes de verlo. Verifique con los bytes sin procesar, no un objeto re-codificado. Las rayas señalan
timestamp.body, las flacas señalanv0:timestamp:body.