企业微信开发:自建应用:接收消息(企业内部服务器)/回调配置

news2024/12/23 3:39:30

概述

在企业微信的自建应用中,用户触发了某些行为(发送消息、进行菜单操作或者外部联系人变更等),要发送相关信息给企业内部服务器

备注:接收消息回调,在本文中指代相同的行为,即企业微信服务器向企业内部服务器发送消息。之所以有不同的说法,是由于企业微信官方开发文档和管理后台的说法差异导致的。

企业微信的开发文档,参考:回调配置。

使用情景

  • 自定义丰富的服务行为。比如,用户向应用发消息时,识别消息关键词,回复不同的消息内容;用户点击应用菜单时,转化为指令,执行自动化任务。
  • 可以及时获取到状态变化。比如,通讯录发生变化时,不需要定时去拉取通讯录对比,而是实时地获取到变化的通讯录节点,进行同步。

企业微信-管理页面,配置接收消息

这里的接收消息,指的是企业内部服务器接收企业微信服务器发送的消息。

在这里插入图片描述

点击 设置API接收,进入如下配置页面:
在这里插入图片描述

配置说明

配置API接收消息,需要有三个配置项,分别是:URL, Token, EncodingAESKey

URL:企业服务器地址

URL为回调服务地址,由开发者搭建,用于接收通知消息或者事件。
在这里插入图片描述

Token:签名密钥

Token用于计算签名,由英文或数字组成且长度不超过32位的自定义字符串。

开发者提供的URL公开可访问的,这就意味着任何人拿到这个URL,都可以向该接口推送消息。为了保证URL服务的安全性,需要解决两个问题:

  • 确认请求来源是企业微信;
  • 确认消息内容没有被篡改

解决办法:数字签名

具体为:约定Token作为密钥,仅开发者和企业微信知道,在传输中不可见,用于计算签名。企业微信在推送消息时,将消息内容与Token计算出签名,并将消息内容和签名一起传递给企业内部服务器企业内部服务器接收到推送消息时,也按相同算法计算出签名。如果为同一签名,则可信任来源为企业微信,并且内容是完整的(没有被篡改)。

在这里插入图片描述

  • 如果非企业微信来源,由于攻击者没有正确的Token,无法算出正确的签名;
  • 如果消息内容被篡改,由于开发者会将接收的消息内容与Token重算一次签名,该值与参数的签名不一致,则会拒绝该请求。

EncodingAESKey:消息加密密钥

EncodingAESKey 用于消息内容加密,由英文或数字组成且长度为43位的自定义字符串。

由于消息是在公开的因特网上传输,消息内容是可被截获的,如果内容未加密,则截获者可以直接阅读消息内容。若消息内容包含一些敏感信息,就非常危险了。

EncodingAESKey 就是在这个背景基础上提出的,将发送的内容进行加密,并组装成一定格式后再发送。

在这里插入图片描述

回调服务实现

配置回调服务时,需要能同时支持HttpGet以及HttpPost两种能力,

  • 企业微信会先判断URL服务是否具备解析企业微信推送消息的能力。
    具体方式是,企业微信往URL服务上发一条Get请求带签名及密文参数到URL服务上,如果URL服务检查签名通过,并能正确返回密文参数对应的明文字符串,则验证通过。此时在企业微信的配置就开始生效。
  • 后续的业务请求(比如应用菜单的点击事件,用户消息等),都会类似的方式(签名+密文)向服务URL推送消息。URL服务验证签名通过后,需要将POST数据解密,就可以得到对应的业务消息明文。

在这里插入图片描述

官方文档中,包含进一步的示例:

  • 支持 Http Get 请求,验证URL有效性
  • 支持 Http Post 请求,接收业务数据

具体实现细节,请参考官方文档:回调服务需要实现哪些功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1361468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter接口自动化测试 :Jmeter变量的使用

在使用jmeter进行接口测试时,我们难免会遇到需要从上下文中获取测试数据的情况,这个时候就需要引入变量了。 定义变量 添加->配置元件->用户自定义的变量 添加->配置元件->CSV 数据文件设置 变量的调用方式:${变量名} 变量的作…

设计模式——最全梳理,最好理解

新年献礼! 设计模式呕心梳理 创建型模式 单例模式(Singleton Pattern)https://blog.csdn.net/qq_34869143/article/details/134874044 整理中... 结构型模式 代理模式(Proxy Pattern)https://blog.csdn.net/qq_34…

期货日数据维护与使用_日数据维护_界面代码

目录 写在前面 界面图示 ​编辑 代码 执行代码 写在前面 本文默认已经创建了项目,如果不知道如何创建一个空项目的,请参看以下两篇博文 PyQt5将项目搬到一个新的虚拟环境中 https://blog.csdn.net/m0_37967652/article/details/122625280 python_P…

软件测试面试总结分享

第一轮 自我介绍。根据自己的情况扩展。你是怎么理解软件测试的?我觉得软件测试是很重要的岗位,如果一个系统开发完后不通过测试去产品质量把关,产品不能正常运行可能造成的后果,损失钱财、损失时间、损失客户等等,所…

2024苹果Mac电脑免费文件数据恢复软件EasyRecovery

EasyRecovery是一个操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序,它不会往源驱上写任何东西,也不会对源驱做任何改变!EasyRecovery是一个操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序,它不会往源驱上…

【SpringBoot实战专题】「开发实战系列」全方位攻克你的技术盲区之Spring定义Jackson转换Null的方法和实现案例

Spring自动定义Jackson转换Null得方法 背景MessageConverter 使用Jackson原生方式处理空字段(次重点方案)ObjectMapper的配置选项通过使用注解的方式 MappingJackson2HttpMessageConverter(重点方案)创建MappingJackson2HttpMessa…

深度学习在工地安全帽识别技术的应用与展望

当我们谈论“工地安全帽识别”时,实际上我们在探讨的是如何利用深度学习图像识别技术来提高建筑工地的安全性。这一技术的应用可以显著提高工地安全管理的效率和有效性,是现代建筑工程管理中不可或缺的一部分。以测评的北京富维图像的工地安全帽识别为例…

【管理篇 / 登录】❀ 06. macOS下使用USB配置线登录 ❀ FortiGate 防火墙

【简介】飞塔防火墙上都会配有CONSOLE接口,包装里都会配置一根USB配置线,通过这个接口和这根线,我们可以用命令的方式登录飞塔防火墙。随着苹果电脑的普及,我们来学习如何在macOS中使用USB配置线登录飞塔防火墙。 早期飞塔防火墙包…

【数据分享】2023年我国省市县三级的商务住宅数量(4类设施/Excel/Shp格式)

产业园区、住宅区、楼宇等商务住宅的数量是一个城市基础设施完善程度的重要体现,一个城市商务住宅的种类越丰富,数量越多,通常能表示这个城市的城市化水平越高! 本次我们为大家带来的是我国各省份、各地级市、各区县三个层级的商…

静态网页设计——网上书店(HTML+CSS+JavaScript)

前言 声明:该文章只是做技术分享,若侵权请联系我删除。!! 使用技术:HTMLCSSJS 主要内容:网上式的书店。是一种高质量,更快捷,更方便的购书方式。网上书店不仅可用于图书的在线销售…

使用 Maven 的 dependencyManagement 管理项目依赖项

使用 Maven 的 dependencyManagement 管理项目依赖项 介绍 在开发 Java 项目时&#xff0c;管理和协调依赖项的版本号是一项重要而繁琐的任务。 而 Maven 提供了 <dependencyManagement> 元素&#xff0c;用于定义项目中所有依赖项的版本。它允许您指定项目中每个依赖…

thinkadmin列表根据值判断男女显示和form选择select

{field: gs, title: 公司, align: left, minWidth: 140,templet

安全加固之weblogic屏蔽T3协议

一、前言 开放weblogic控制台的7001端口&#xff0c;默认会开启T3协议服务&#xff0c;T3协议则会触发的Weblogic Server WLS Core Components中存在反序列化漏洞&#xff0c;攻击者可以发送构造的恶意T3协议数据&#xff0c;获取目标服务器权限。 本文介绍通过控制T3协议的访问…

淘宝京东1688商品详情API接口,搜索商品列表接口

前言 在实际工作中&#xff0c;我们需要经常跟第三方平台打交道&#xff0c;可能会对接第三方平台API接口&#xff0c;或者提供API接口给第三方平台调用。 那么问题来了&#xff0c;如果设计一个优雅的API接口&#xff0c;能够满足&#xff1a;安全性、可重复调用、稳定性、好…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连(C#)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK实现相机掉线自动重连&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机的掉线自动重连的技术背景通过PnP事件函数检查Baumer工业相机是否掉线在NEOAPI SDK里实现相机掉线重连方法&#xff1a;工业相机掉线重连测试演示图…

x-cmd-mod | zuz - 压缩或解压文件

目录 简介首次用户子命令x zuz zx zuz uzx zuz uzrx zuz ls 相关链接 简介 zuz 为 x-cmd 中的必用模块之一&#xff0c;提供压缩与解压文件的功能。 x z 就是调用 x zuz z&#xff0c;可将目标文件压缩根据后缀名成指定格式&#xff0c;x uz 则可以解压任何格式的压缩包 首次…

音乐制作软件Studio One mac有哪些特点

Studio One mac是一款专业的音乐制作软件&#xff0c;该软件提供了全面的音频编辑和混音功能&#xff0c;包括录制、编曲、合成、采样等多种工具&#xff0c;可用于制作各种类型的音乐&#xff0c;如流行音乐、电子音乐、摇滚乐等。 Studio One mac软件特点 1. 直观易用的界面&…

将DOM结构转换成图片保存至本地或保存至剪切板

在新业务需求中&#xff0c;碰到这样一个场景&#xff0c;需要将后端返回的表格数据&#xff0c;保存至本地或者保存至剪切板&#xff0c;直接发送给用户使用。 1. 将内容转换成图片并保存至本地 1.1 交互效果 如图所示&#xff0c;想要点击复制按钮后&#xff0c;将下面这个…

simulink代码生成(六)——中断向量模块的配置

假如系统中存在多个中断&#xff0c;需要合理的配置中断的优先级与中断向量表&#xff1b;在代码生成中&#xff0c;要与中断向量表对应&#xff1b;中断相关的知识参照博客&#xff1a; DSP28335学习——中断向量表的初始化_中断向量表什么时候初始化-CSDN博客 F28335中断系…

x-cmd pkg | thefuck - 终端命令纠错工具

目录 简介首次用户功能特点规则和即时模式竞品和相关作品进一步阅读 简介 thefuck 是一个终端命令纠错工具&#xff0c;可以帮助您更正先前键入的错误命令。它能纠正绝大部分常见的命令错误&#xff0c;如命令拼写不对、输错命令等。 基本原理&#xff1a;获取您最近执行的一…