解决钉钉服务器出口IP不确定问题:自签名根证书+hosts文件+nginx反向代理

解决钉钉服务器出口IP不确定问题:自签名根证书+hosts文件+nginx反向代理,第1张

企业内部应用一般部署在内网,没有固定的公网IP,这样在访问钉钉的API时就会被拦截下来。钉钉的服务器出口IP只支持一个统配符,出现不匹配的情况就会被拦截。 当然存在多种解决方案,各有差别,但是本质都需要一个公网服务器,公网搭设一个代理服务: 这里我介绍一种用反向代理的方法解决没有固定IP的方案。内网的windows服务器只需要一个根证书、改Hosts文件即可。 本地hosts文件强制解析到自有服务器上,中间的证书是自签名认证的,服务器获取到请求后转发给真正的钉钉服务器,这样出口IP就确定了下来,能过验证。注意根证书的私钥不要泄露了,否则带来中间人攻击的风险。

成功后示例 开发前准备: 1,开放平台注册申请权限 2,选择钉钉应用类型,创建应用,获取AppKey,AppSecret,CORP_ID 3,准备开发环境 静态页面、JS,CSS放在ngnix,本地接口用tomcat。(这个我在想flutter 如何能够放到里面不是太理解) 4,调试:钉钉的H5微应用调试只能“真机”调试,所以 建议 调试的时候使用 内网穿透工具 ; 5,JSAPI免登授权码  获取当前钉钉登录用户的账号信息,需要通过免登授权码换取 (这个需要后端api进行辅助 前端和后端才能进行通信)在开发者后台添加完大概就这样了, 其他信息:如 回调URL(在服务端搭好之后填写), 首页地址等, 后续可以修改.     1. 相关配置参数可参照上面 应用基础信息 那张图来一 一对应 .     2. 所有的关键信息 是存储在服务端的, 如我们的suiteKey/suiteSecret/suiteTicket/aesKey/token     3. 所以和钉钉相关的数据交互都是在服务端,后台完成的, 除了获取免登授权码     4. 我们的前端和我们的服务端交互过程中, corpId 由前端获取 , 传递给我们     5. 服务端和钉钉交互所使用的accessToken , 可以每次都去钉钉重新获取, 但是更建议在有效期内, 后端获取一次, 然后存储在前端, 每次的数据交互将token 传递给后端     6. 钉钉向我们服务器发送请求, 也就是钉钉应用里面的回调地址     7. 钉钉的所有消息都是通过回调通知我们的, 而且消息的结构是一致的 根据上面的相关说明将服务端放置在自己的公网服务器也好,或者使用相关的 内网穿透工具 也好  (自行解决) 总之, 现在要有一个可以 访问我们 服务端项目的 公网地址  确保你自己的服务器可以使用公网地址访问到,并且成功返回数据同时确保: 必须有回调地址借口用来接收钉钉发送的消息                                    (本文示例地址:/ding/callback) 必须有一个接收免登授权码和企业corpId 来返回用户信息的接口      (本文示例地址:/ding/login ) 公网可以访问的服务端地址, 接收钉钉发给我们的消息(回调地址)如:http://ding.lnexin.cn/server/ding/callback,我们自己的登录地址,如:http://ding.lnexin.cn/server/ding/login 在钉钉开发者平台创建配置好的一个H5微应用 确保服务端的参数和微应用的基础信息一致 完成上述步骤,在客户端依旧是没有应用入口的,如: 下面需要在开发者平台进行授权最后能在钉钉上使用了 基本就是这样一个流程 如果感觉不太详细 点击下面链接看就可以 以上文章通过读  https://www.cnblogs.com/applerosa/p/11509512.html


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/667101.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-07-26
下一篇2023-07-26

发表评论

登录后才能评论

评论列表(0条)

    保存