PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-从ColdFusion中的Microsoft Teams自定义Bot验证HMAC大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试使用COldFusion,following the Microsoft instructions in C#对Microsoft Teams自定义Bot进行身份验证.我也在this PHP example之后进行了尝试.但是我没有任何运气.知道我在这里缺少什么吗?

<cfset secretKey       = "MsVx7SpJKnSiycvsUyLMiD8lDIFkEUDhuYuFAT94hXY=">
<cfset httprequestData = GethttprequestData()>
<cfset c               = httprequestData.content>
<cfset calculated_hmac = toBase64(hmac(c, secretKey, "HMACSHA256"))>

我得到这个…

calculated_hmac: Nje2RUY1RjREQTNEMzk1Q0RBNUJDMEE2NDhFNzk3RDIyNUMzRDJDMjk5NTYzMDgxODk0NkU3Njc3RTVEQTAyQQ==

来自Microsoft的headers.authorization是这个…

HMAC 6N0WyOW7g+LqShKYsouWOrPjgh0PD1gazfwNeNwpuS8=

对于此特定示例,GethttprequestData().content是…

解决方法:

(请注意,我无法复制该“ calculated_hmac”,因为样本“ content”字符串必须与原始字符串有所不同-可能只是空白,但这足以完全改变结果…).

无论如何,基于the instructions,我猜主要问题是在哈希中使用字符串而不是二进制:

首先尝试将主体解码为二进制

<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")>

大佬总结

以上是大佬教程为你收集整理的php-从ColdFusion中的Microsoft Teams自定义Bot验证HMAC全部内容,希望文章能够帮你解决php-从ColdFusion中的Microsoft Teams自定义Bot验证HMAC所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: