更新时间:2024-01-05
1. 背景
企业微信在2022年6月20日发布了公告:
自建及代开发应用安全性升级
https://developer.work.weixin.qq.com/community/announcement/detail?content_id=16334603338859177543
在7月29日发布的企业微信自建应用安全性升级预告:
https://open.work.weixin.qq.com/wwopen/common/readDocument/40457
造成了本次企业微信对接方式的变更,其最终结果就是原先给客户企业配置自建应用的方式不再适用,而是要转变为第三方应用代开发的模式去帮用户新建企业微信认证应用。并且通过该方式进行配置,企业微信还会根据客户企业使用应用人数收取费用。
1.1. 新接口改动点
1、为什么需要进行改动,原先哪个部分不能使用了?
在旧有文档中,在给客户新建自建应用的时候有添加可信域名和可信IP的部分。
但因为企业微信安全性升级,目前这个地方只能配置客户企业的可信域名及可信IP,而原先的mdq.sundray.com.cn为信锐的绑定域名,不再可以配置。mdq.sundray.com.cn该域名为云的域名,企业微信认证需要通过该服务器进行信息获取与同步,现在客户无法配置该域名为可信域名,则云无法通过接口获取客户企业信息,导致配置失败。
2、现在该如何改动?
企业微信提供了在这种场景下为客户企业开发应用的企业代开发应用模式,且目前这种场景下也只能使用该模式。
在这种模式下,引入了一个服务商的角色,客户企业通过代开发授权让服务商进行应用的开发,相应的客户企业隐私安全性也得到了提升。
3、为何一定要走服务商代开发应用模式?
因为企业微信认证应用无论是哪个企业进行使用,核心都需要mdq.sundray.com.cn这个云服务进行客户企业信息的获取与同步到客户控制器上。而该域名为信锐所属,客户在企业微信更新之后就无法在自建应用进行配置了,只能走服务商代开发应用的模式进行配置。
4、为什么要进行收费?收费标准是怎么样定的?
收费主要是因为企业微信需要收费。收费标准参考以下企业微信的接口说明:
面向服务商进行收费模式调整的说明 (qq.com)
5、哪些物联网平台版本支持新版本企业微信接口对接?
当前只有在IOTP IPSIP 3.7.12.2 202211250623 版本才有定制包支持新版本企业微信接口对接,其他版本需要找研发接口人评估定制迁
2. 企业微信对接配置步骤说明
2.1. 升级物联网平台定制包
- 平台IOT包升级。进入平台,系统维护-设备升级-补丁包升级,上传KB包:
2.2. 授权服务商进行代应用开发(客户管理操作)
客户管理员用手机企业微信扫如下截图的授权二维码,授权服务商进行代应用开发。
2.3. 服务商进行代开发应用配置(服务商即信锐技服配置)
前提:需要有进到服务商企业微信的权限(后续提供)
• 可信域名
iotweb.gj.sundray.com.cn
• IP白名单
iotweb.gj.sundray.com.cn解析出来的IP
此处为121.46.130.78;121.46.26.18
如果是使用的我们搭建的回调服务器则填写
http://121.46.26.129:800/wxcallback/test/verify.php
• Token:
kzxuC76ogNp9
• EncodingAESKey:
SNKefpoDBBcTGiHTfoJjEdnsnHe7n6qeBjajAPQp1IB
点击完成后,接下来编辑权限
此处画圈部分为必选项
变更权限后需要客户管理员通过权限申请才能生效
2.4. 获取代开发“信锐物联网认证模板”应用Secret
2.4.1. 获取suite_id(模版id)和suite_secret(模版Secret)
suite_id:模板id
suite_secret:模板Secret
2.4.2. 监控代开发应用回调的信息
在服务商搭建回调服务的服务器上执行,进入回调服务器后台:/home/docker -nginx/www/wxcallback/basic后找到receive.log文件所在目录,输入命令:tail -f receive.log
该命令可以监控代开发应用回调的信息,用于获取后续的AuthCode和suite_ticket。
服务器登录方式找专家获取。
2.4.3. 根据suite_id(模版id)获取AuthCode
点击代开发应用页面上的【重新获取】
接下来服务器后台会弹出回调信息如下图所示,观察“收到的id”,找到与模版id一致的值后下面这串即为我们需要的参数。
将该串中的光标选中字段截取下来(根据实际情况获取)。
mMhWuY1gRE4_gfQ93lcY1aoO6HGf4KBpUY0Qizpp2CWKFOmTWVlb-RhNEL54Tp28xjXrIbYqokaWYRtk-hNwKsoc2ugegcK7eVPeTq50Gjo
这串即为AuthCode
2.4.4. 根据suite_id(模版id)获取suite_ticket
Suite_ticket是由微信开放平台每十分钟向服务器后台回调发送一个ticket,在服务器后台查看记录会发现有这样的信息
如果没有,那么点击查看模板信息,刷新Ticket,就会在后台找到
其中,根据修改密码代开发应用模板id,也就是suite_id来确定suite_ticket,据此这里的suite_ticket为(根据实际情况获取):
OYj_4UqGT3JH3K9FZ2HFHWWGDFDEixDhD66lfXtDE2q5mvZJupIoeguUxuIy0Fgt
2.4.5. 获取suite_access_token
使用上面suite_secret、suite_id、suite_ticket就可以获取suite_access_token相关接口文档:https://developer.work.weixin.qq.com/document/path/90600
请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/service/get_suite_token
请求包体:
suite_id章节:2.4.1
suite_secret章节:2.4.1
suite_ticket章节:2.4.4
{
"suite_id":"前面获取到的suite_id字段",
"suite_secret":"前面获取到的suite_secret字段",
"suite_ticket":"前面获取到的suite_ticket字段"
}
这样就获取到了suite_access_token。
2.4.6. 获取应用Secret
然后根据suite_access_token和Auth_Code来获取应用Secret,接口文档:
https://developer.work.weixin.qq.com/document/path/90603#14942
请求方式:POST(HTTPS)
请求地址:https://qyapi.weixin.qq.com/cgi-bin/service/get_permanent_code?suite_access_token=suite_access_token字段(章节2.1.6)
Suite_access_token=前面获取到的suite_access_token字段(章节2.1.6)
请求包体:
{
"auth_code": "前面获取到的auth_code字段"
}
上面截图表明了应用Secret和应用ID,记录下来,在控制器上配置时需要用到。
2.4.7.注意事项
在执行这步时,如果调用接口返回了类似如下截图的报错,表示当前IP不允许调用这个接口:
要把通过postman获取密钥的这台电脑的公网IP加入【服务商信息】中【IP白名单】中,以便调用接口
2.5. 上线代应用“信锐物联网认证”
等待企业微信审核结束(通常在几分钟内,如果审核时间太长,建议直接联系企业微信客服审核),审核结束即可在客户企业微信中看见此应用呈现待上线状态,点击进去提交上线,此时在客户企业微信中就能看见此应用了
而后,需要在客户企业微信中设置可见范围,此可见范围是后面物联网平台拉取客户企业微信名单,建议设置根目录,即全公司可见目录
2.6. 物联网平台上企业微信配置
登录物联网平台,进入账号管理,找到企业微信,添加服务器,。
通过登录客户企业微信平台确认客户企业ID。
配置企业微信认证服务器,依次填入corpid(刚刚看到的企业ID)、Agentid(2.1.7章最后post请求获取到的Agentid)、Secret(2.1.7章最后post请求获取到的permanent_code)
然后点击复制该应用地址,回到信锐企业微信后台,代应用开发,找到模板
设置应用主页,填入刚刚在物联网平台复制的应用地址
提交保存,需要到代开发应用上线重新提交应用上线
2.7. 物联网平台同步客户信息及个人敏感信息
注意:平台请求IP没有加入应用IP白名单,会出现ip地址受限
需进入平台后台,进入docker
输入:tail -f /iotp/log/policy_engine.log
输入企业微信服务器信息后点击“下一步”,查看平台后台刷出来的ip
将刷新出来的ip填写到企业微信后台,应用白名单
重新到代开发应用上线重新上线应用(注:每次更新白名单需要重新上线应用)
选择需要同步的账号(此步骤必须要设置企业微信应用可见范围)
目前还剩下手机号和邮箱信息未能同步,点击同步用户隐私数据
被同步用户会在企业微信收到一条带有授权链接的消息,让客户点击此消息链接并在弹出的中间页中勾选授权手机号和邮箱等信息,等待跳转成功字样页面
回到物联网页面,点击刷新,即可同步手机号与邮箱号
2.8. 物联网管理员授权
同步过来的企业微信账号,需要在物联网平台上授权为应用管理员或者空间管理,才能进行后续物联网平台的设备管理和接收物联网平台的告警/巡检结果消息推送
在账号管理-管理员授权里面,新增应用管理员,选择管理员为“企业微信”,可以选择之前同步过来的企业微信账号,设置密码和应用权限之后点击提交,完成应用管理员的设置;
当然也可以在应用-基础运维-空间管理员里面,新增空间管理员,同样可以选择企业微信同步过来的账号,设置密码和空间权限之后点击提交,完成空间管理员的设置;空间管理员还可以设置只读权限;
3. 效果展示
3.1. 企业微信浏览物联网应用
在企业微信工作平台上打开待开发的物联网应用可以直接进行物联网平台管理,和信锐Conductor(原掌物联)APP效果一样
3.2. 推送告警消息到企业微信
3.2.1. 推送效果测试
在智能策略-告警策略-告警测试界面,可以进行各种告警方式的测试,这里选择企业微信消息推送,勾选需要推送消息的企业微信账户(已经过授权的应用管理员或者空间管理员)。
3.2.2. 告警策略推送给企业微信配置
进入物联网应用 - 智能策略 – 告警策略 里,选择告警并推送方式为企业微信推送,然后选择之前添加的应用管理员或者空间管理员。具体告警规则根据实际情况进行勾选配置