(Обратите внимание, что я не смог воспроизвести этот "selected_hmac", потому что строка образца "content" должна каким-то образом отличаться от оригинала - возможно, просто пробел, но этого достаточно, чтобы полностью изменить результат ...).
В любом случае, основываясь на инструкциях , я бы предположил, что основная проблема заключается в использовании строк, а не двоичных, в хешировании:
- Генерация hmac из тела запроса сообщения .... Вам нужно преобразовать тело в байтовый массив в UTF8.
- Чтобы вычислить хеш, предоставьте массив байтов токена безопасности , предоставленного Microsoft Teams при регистрации исходящего веб-крюка.
Сначала попробуйте расшифровать тело в двоичный файл
<cfset bodyBinary = charsetDecode(GetHttpRequestData().content, "utf-8")>
Сделайте то же самое с секретным ключом
<cfset secretKey = "MsVx7SpJKnSiycvsUyLMiD8lDIFkEUDhuYuFAT94hXY=">
<cfset secretBinary = binaryDecode(secretKey, "base64")>
Наконец, не забудьте, что HMAC () возвращает шестнадцатеричную строку. Если вам нужна base64, вам придется сделать DIY:
<cfset hexHash = hmac(bodyBinary, secretBinary, "HMACSHA256")>
<cfset calculated_hmac = binaryEncode(binaryDecode(hexHash, "hex"), "base64")>