Python如何接入开放平台?签名验签、加密解密、授权认证测试实战

当前大型top企业都有非常成熟的开放平台业务,比如微信开放平台、新浪微博开放平台、支付宝开放平台等。开放平台的发展为第三方个人或企业提供了巨大的机遇。开发者想要接入各大开放平台,必须要遵从开放平台的安全机制,实现业务逻辑的前提,首先就是要实现签名验签、加密解密以及授权认证机制。

本文介绍基于python的开放平台签名、认证测试体系,可以用于第三方应用的沙盒测试,同时可以应用于服务提供方相关系统的全面测试。

[[322111]]

一、引言

开放平台是指大型企业将自身的数据能力、计算能力、用户体系、产品能力等资源以业务+场景+解决方案+技术的优势包装出来,通过openAPI、openSDK、openH5等形式开放给第三方个人或企业使用,实现第三方和服务提供方企业自身的互利共赢。

当前各大厂的开放平台都已经比较成熟,比如说微信开放平台、新浪微博开放平台、支付宝开放平台等。同时,各大商业银行也在大力发展自身的开放银行业务。作为第三方开发者,通常来说接入开放平台有比较统一的流程,下图给出了微信开放平台的开通流程。

图1 微信开放平台接入流程

如图1第三步所示,在申请的应用上线前,必须要进行必要的测试,而进行业务逻辑测试的前提就是进行签名验签、加密解密以及授权认证等安全认证机制的测试。python社区非常成熟,广泛应用于机器学习、数据分析、网络爬虫、自动化脚本等诸多领域。

在web开发中当前也有很多公司诸如Instagram, Quora, Lyft, Dropbox、知乎等后端都采用python开发。本文介绍基于python的签名验签、加密解密以及授权认证测试的实现。

二、签名验签

第三方个人或企业通过开放平台门户网站提交成为开发者的申请,开发者资质认证通过后,开发者通常会从服务提供方获得自身的appid、appsecret以及证书,其中证书中包含第三方开发者的私钥以及服务提供方的公钥。

服务提供方保留第三方开发者的公钥以及自身的私钥。开发者通过自身的私钥进行签名,发送报文到开放平台服务器,服务器验签通过后会用自身的私钥对返回给开发者的报文进行签名,开发者接收到返回报文后利用服务方提供的公钥进行验签。通过这个过程开发者和服务方就可以相互确认发送的报文没有被中间人篡改。

本文中签名验签用RSA算法进行演示,使用到了python的Crypto库,需使用pip或conda等其他包管理工具进行安装。

一般情况下开发者需要对报文各个字段进行预处理。

  • 将请求字典中的空值,或者没必要的参数都去掉(如sign、sign_type等);
  • 对字典进行排序(按ASCII码从小到大);
  • 把字典中的所有元素,按照”参数=参数值”的模式用”&”字符拼接成字符串。

数据预处理见下图的函数:

图2 数据预处理函数

开发者发送报文时,用一个Hash函数对报文中生成摘要,然后用私玥对摘要进行加密,最后加密后的摘要作为报文的数字签名和报文一起发送给服务方。下图展示了RSA算法的签名函数实现:

图3 数字签名函数

首先用hash_method函数选择采用的摘要算法,可以根据实际情况进行函数的重构,这里演示了MD5和SHA256算法的示例。签名函数首先要读入开发者私钥,然后用RSA算法完成签名。

开发者收到服务方返回的报文后,用与一样的Hash函数从接收到的原始报文中计算出报文的摘要,接着再用发送方的公钥对报文附加的数字签名进行解密,如果这两段摘要一致,则开发者就可以确认该报文是服务方发送的,且没有被篡改。

图4 验签函数

三、加密解密

RAS算法除了可用于数字签名外,同样可用来对报文进行非对称加密,非对称加密安全性要比对称加密高,但由于算法强度比对称加密复杂,加解密的速度比对称加解密慢。对称加密算法的特点是计算量小、加密速度快、加密效率高。不足之处是,交易双方都使用同样密钥,安全性得不到保证。常见的对称加密算法有DES、AES 等。

在互联网上传输消息即要保证信息的安全性,又要保证不能有高的延迟,所以通常会将对称加密算法和非对称加密算法联合使用。使用非对称加密算法进行数字签名以及将对称加密算法所用密钥的加密传输,然后再使用对称加密算法对报文进行加解密,即保证了报文传输的安全性,又保证了报文传输的速度,提升了用户体验。

下面介绍python实现AES加解密的方案,其他加密算法也是类似的方法,可以根据服务方的要求选择采用哪种算法。AES加密方式有五种:ECB, CBC, CTR, CFB, OFB。最常用的是CBC加密方式。CBC加密需要一个十六位的key和一个十六位偏移量。开发者使用服务方提供的appsecret作为key来进行加解密,具体实现如下图所示:

图5 AES加解密

加密后的数据要和签名一同发送到服务方,通常情况下报文是否采用对称加密是可选的,开发者可以 根据开放平台的规定以及交易的重要程度选择是否加密。

四、授权认证

各大开放平台都有自身的授权认证机制,目前最流行的机制就是OAuth2.0。OAuth2.0 是一个开放授权标准,它允许用户授权第三方应用访问该用户在某服务(比如微博、微信、qq等)上的特定私有资源,而不需要提供账号密码给第三方应用,也不需要注册第三方应用的账户。想要进行开放平台授权认证测试,就必须要根据OAuth2.0标准与服务方进行对接。在一般情况下,服务方提供授权服务,主要提供两类接口:

(1) 授权接口:接受第三方应用的授权请求,该接口通常包含以下参数:

  • response_type:必选。值固定为”code”。
  • client_id:必选。第三方应用的标识ID,也就是appID。
  • state:可选。第三方提供的一个字符串,服务器会原样返回。
  • redirect_uri:必选。授权成功后的重定向地址。
  • scope:可选。表示想要访问的资源的授权范围。

接口访问成功后会得到授权码。

(2) 获取访问令牌(token)接口:使用授权接口提供的授权码来颁发访问令牌给第三方应用。通常包含以下参数:

  • grant_type:必选。固定值”authorization_code”。
  • code : 必选。授权接口中响应的授权码。
  • redirect_uri:必选。必须和授权接口中提供的redirect_uri相同。
  • client_id:必选。必须和授权接口中提供的appID相同。

第三方应用拿到token后就可以用token去请求用户授权其访问的保存在服务方的资源。

上述接口的请求可以自己编码实现。python的django-allauth库已经封装了包括GitHub、Twitter、微博、微信、百度等几十种第三方授权认证方式。通过简单的配置就可以应对各大厂开放平台的授权认证测试。下图展示了如何在django应用中注册django-allauth第三方登陆服务。

图6 使用django-allauth库完成第三方授权登陆

五、总结

本文介绍了使用python接入各大开放平台,实现签名验签、加密解密以及授权认证的测试方法,给出了详细的示例。开发者可以通过将上述的方法封装成django或者其他框架的web应用,形成易于测试人员操作的界面,在处理签名验签、加密解密、授权认证等测试或开发工作时,可以极大地极大的提升工作效率。

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/143863.html<

(0)
运维的头像运维
上一篇2025-03-09 21:46
下一篇 2025-03-09 21:47

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注