coding / coding/Webhook.v2.Demo
使用Egg.js始终无法校验成功
- 主要言語
- JavaScript
- スター
- 4
- フォーク
- 3
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
```
verifyWebhook() {
const { ctx } = this;
if (!ctx.request.headers['user-agent'].includes('Coding.net Hook')) {
return false;
}
const theirSignature = ctx.request.headers['x-coding-signature'];
const payload = JSON.stringify(ctx.request.body);
const secret = '123';
const ourSignature = `sha1=${crypto.createHmac('sha1', secret).update(payload).digest('hex')}`;
return crypto.timingSafeEqual(Buffer.from(theirSignature), Buffer.from(ourSignature));
// 始终返回false,怎么回事??
}
}
```
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
verifyWebhook() のエントリーポイントから開始し、受信したリクエストボディから計算した HMAC と x-coding-signature を比較します。Coding.net webhook における payload の表現と署名の入力を確認します。正常な webhook が検証に通過し、不正な署名では引き続き false が返されれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript
- 領域
- api
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100