with objects method full eventrender event description attempting javascript github webhooks github-api

javascript - objects - tooltip fullcalendar



La firma del evento Github push no coincide (1)

La codificación predeterminada de Crypto hash.update () es binaria, como se detalla en la respuesta al Nodo JS crypto, no puede crear hmac en caracteres con acentos . Esto causa un problema en la carga útil de su evento push, que contiene el carácter U+00E1 LETRA A U+00E1 LATINA CON AGUDA en Hernández cuatro veces, y los servicios de GitHub cifran la carga útil como codificación utf-8 . Tenga en cuenta que su Gist muestra estos valores incorrectamente codificados en ISO-8859-1, por lo que también debe asegurarse de que está manejando la codificación de caracteres de la solicitud entrante correctamente (pero esto debería ocurrir de manera predeterminada).

Para solucionar esto, necesitas usar un Buffer :

hmac = crypto.createHmac(''sha1'', tok).update(new Buffer(blob, ''utf-8'')).digest(''hex'');

... o pasa la codificación directamente para update :

hmac = crypto.createHmac(''sha1'', tok).update(blob, ''utf-8'').digest(''hex'');

Se calculará el hash correcto de 7f9e6014b7bddf5533494eff6a2c71c4ec7c042d .

Estoy codificando un Webhook para GitHub e implementado una verificación segura en KOA.js como:

function sign(tok, blob) { var hmac; hmac = crypto .createHmac(''sha1'', tok) .update(blob) .digest(''hex''); return ''sha1='' + hmac; } ... key = this.request.headers[''x-hub-signature'']; blob = JSON.stringify(this.request.body); if (!key || !blob) { this.status = 400; this.body = ''Bad Request''; } lock = sign(settings.api_secret, blob); if (lock !== key) { console.log(symbols.warning, ''Unauthorized''); this.status = 403; this.body = ''Unauthorized''; return; } ...

para pull_requests y create events esto funciona bien, incluso empujar nuevas ramas funciona, pero para push confirma eventos x-hub-signature y el hash calculado de la carga no coinciden, por lo que siempre se 403 no autorizado.

Actualizar

Me he dado cuenta de que para este tipo de cargas útiles push los commit y head_commit se agregan a la carga útil. He intentado eliminar los commits y el head_commit del cuerpo, pero no funcionó.

Actualizar

Para obtener más información, revise estas cargas de ejemplo. También incluí la url para el informe de prueba y la información del token: https://gist.github.com/marcoslhc/ec581f1a5ccdd80f8b33