リクエスト検証について - トークBot - LINE WORKS Developers : コミュニティ

リクエスト検証について

Nishi

2021.06.12既読 432

下記のページにございますJavaサンプルコードにapiIdとhttpRequestBodyの値を入れてプログラムを実行したのですが、
"X-WORKS-Signature"に含まれる値と一致しません。
Pythonでも同様のコードを記載しましたがそちらでも値が一致しません。
途中の値を確認しても異なるので、変換元としているリクエストボディが間違っているのではないかと思っています。
変換元なるリクエストボディのサンプル、もしくは形式をご教示いただけないでしょうか。

コメント2

  • 업데이트 된 답글입니다.

    佐藤正宗

    私は Node.js を使用していますが、改ざんチェックできていますよ。
    express を使用してメッセージを受信していますが、JAVA はあまり明るくないのですが、何を使用していますか?
    Python だと flask あたりでしょうか。

    参考に、Node.js でのコードを張り付けておきますね。
    const express = require('express');
    const app = express();

    app.use(express.json({verify:(req, res, buf, encoding) => {
       const crypto = require('crypto');
       const hmac= crypto.createHmac('sha256', process.env.API_ID);
       hmac.update(buf);
       
       const data=hmac.digest('base64');
       const signature=req.headers["x-works-signature"];

       console.log("body : " + data);
       console.log("head : " + signature);
       console.log("signature macth : " + (data == signature));
       
       if (data!=signature) throw 'NOT_MATCHED';
    }}));
    app.post('/callback', (req, res) => {
       console.log(req.body);
       return;
    });

    2021.06.14

    0
  • 업데이트 된 답글입니다.

    Nishi 投稿者

    ご教示くださりありがとうございます。
    サンプルコードを参考にpythonコードを見直したら、うまくできました。

    2021.06.16

    0
前の投稿 APP LINKのメッセージで「?」「&」が使えない。
次の投稿APIのリクエスト制限について