18910140161

微信access_token设计的原理解析

顺晟科技

2021-06-16 10:52:47

192

微信接入的原理分析_令牌设计

1.access_token是加密字符串,目的是为了考虑界面安全,否则随便调用微信服务器的界面会有很大风险。

2.用户在微信官方账号中填写的Token相当于本项目中的小明,是签名验证中的一个参数,用来保证签名的安全性。

3.EncodingAESKey由开发人员手动填写或随机生成,将用作消息正文的加密和解密密钥。

4.签名:微信加密签名,结合了开发者填写的令牌参数和请求中的时间戳参数和nonce参数。

5.时间戳:时间戳。

6.随机数。

7.echostr:随机字符串。

8.微信签名加密/验证流程:

(1)三个参数令牌、时间戳和随机数按字典顺序排序。

(2)将三个参数字符串拼接成一个字符串进行sha1加密。

(3)开发者获取的加密字符串可以与签名进行比对,识别请求来自微信。

9.OpenID:为了识别用户,每个用户都会为每个微信官方账号生成一个安全的OpenID。OpenID是用用户的微信号加密的结果。每个用户的每个微信官方账号都有一个的OpenID。开发者可以通过OpenID获取用户的基本信息。

10.UnionID:用于区分用户的性,因为只要是同一微信开放平台账号下的移动应用、网站应用、公众账号,用户的UnionID都是的。换句话说,同一个用户在同一个微信开放平台账号下,对不同的应用拥有相同的UnionID。

11.AppID:接口ID号。

12.AppSecret:密码。

13.access_token:微信官方账号中一张票(登录后的凭据证明你已经登录,相当于带票去听演唱会,也就是说只有买了票才能进入)。

14.expires _ in: access _ token到期时间。因为这是第三方服务器调用的,所以微信服务器必须返回并通知第三方服务器到期时间,这样第三方服务器才能更好的处理。

15.使用access_token的注意事项:

(1)为了保持appsecure,第三方需要一个中央控制服务器来获取和刷新access_token。其他业务逻辑服务器使用的access_token来自中控服务器,不应该单独刷新,否则会导致access_token被覆盖,影响业务。

(2)目前access_token的有效期由返回的expire_in来传达,目前在7200秒以内。中控服务器需要根据这个有效时间提前刷新新的access_token。在刷新过程中,中央控制服务器仍然输出旧的access_token。此时,公共平台的后台会保证新旧access_token在短时间内都可用,保证了第三方业务的顺利过渡。

(3)3.access_token的有效时间以后可能会调整,所以中控服务器不仅需要在内部定时主动刷新,还需要提供一个被动刷新access_token的接口,方便业务服务器在API调用知道access_token已经超时的情况下触发access_token的刷新过程。

16.access_token两小时到期时间的设计原因(网络说明):access_token到期也是出于安全原因。

(1)想象一下这样一种情况,我授权了一个应用,它得到了我的access_token,然后我忘记授权了,所以每次发布都是它带着保存,或者它用我的账号偷偷发消息,我也不知道。这种情况还是很可怕的。

(2)如果只是登录,确实不需要accesstoken,因为openid或者uid已经对应你的用户了。但是,这是一种授权行为,这意味着该第三方应用程序可以获取accesstoken来获取您的数据。所以这里需要时效性,保证安全。

17.微信access_token两小时到期时间的设计原因(自理解):微信token每两小时刷新一次,因为第三方服务器访问微信服务器是为了获取微信服务器中的数据,也就是所谓的第三方登录,用户通过第三方服务器登录,然后第三方服务器去微信平台获取数据,这需要一个授权过程。也就是说,微信服务器允许你从第三方服务器获取数据。为了控制授权过程,授权后不会一直获取微信服务器数据,所以两小时刷新一次。

18.微信服务器接口访问次数限制:微信服务器接口访问次数限制的目的是防止第三方服务器因程序错误无限期调用微信服务器,从而导致微信服务器崩溃。

19.签名验证:验证消息确实来自微信服务器(在本项目中,验证参数确实来自本项目的Android客户端)。

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航