Как решить проблему с проверкой HMAC в приложении Shopify? - PullRequest
0 голосов
/ 21 октября 2019

Я точно следовал коду из документов shopify ( Приложение Shopify с Node и Express ) для интеграции приложения с Express, но, похоже, я все еще нажимаю HMAC Validation Failed.

const map = Object.assign({}, req.query);
            delete map['signature'];
            delete map['hmac'];
            const message = querystring.stringify(map);
            const providedHmac = Buffer.from(hmac, 'utf-8');
            const generatedHash = Buffer.from(
                crypto
                    .createHmac('sha256',this.configService.get('SHOPIFY_API_SECRET'))
                    .update(message)
                    .digest('hex'),
                'utf-8'
            );
            let hashEquals = false;
            // timingSafeEqual will prevent any timing attacks. Arguments must be buffers
            try {
                hashEquals = crypto.timingSafeEqual(generatedHash, providedHmac)
            // timingSafeEqual will return an error if the input buffers are not the same length.
            } catch (e) {
                hashEquals = false;
            };

            if (!hashEquals) {
                return res.status(400).send('HMAC validation failed');
            }

Я ожидаю, что приведенный выше код будет работать и не вернет ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...