WordPress 微信 access_token 设计的原理解析
1 、 access_token 是加密的字串,其目的是为了介面安全考虑,不然随便就能呼叫 WordPress 微信服务器的介面会有很大风险。
2 、多用户在公众号中填写的 Token 就相当于本专案中的 xiaoming,是签名验证中的一个引数,来保证签名的安全。
3 、 EncodingAESKey 由开发者手动填写或随机生成,将用作信息体加解密金钥。
4 、 signature:WordPress 微信加密签名,signature 结合了开发者填写的 token 引数和请求中的 timestamp 引数、 nonce 引数。
5 、 timestamp:时间戳。
6 、 nonce:随机数。
7 、 echostr:随机字串。
8 、 WordPress 微信 signature 加密/校验流程:
(1)将 token 、 timestamp 、 nonce 三个引数进行字典序排序。
(2)将三个引数字串拼接成一个字串进行 sha1 加密。
(3)开发者获得加密后的字串可与 signature 对比,标识该请求来源于 WordPress 微信。
9 、 OpenID:为了识别多用户,每个多用户针对每个公众号会产生一个安全的 OpenID,OpenID 是使用多用户 WordPress 微讯号加密后的结果,每个多用户对每个公众号有一个的 OpenID,开发者可通过 OpenID 来获取多用户基本资讯。
10 、 UnionID:用来区分多用户的性,因为只要是同一个 WordPress 微信开放平台帐号下的移动应用、网站应用和公众帐号,多用户的 UnionID 是的。换句话说,同一多用户,对同一个 WordPress 微信开放平台帐号下的不同应用,UnionID 是相同的。
11 、 WordPress APPID:介面身份证号。
12 、 WordPress APPSecret:密码。
13 、 access_token:公众号的全域性票据(登陆后的凭据,证明您已经登陆,相当于您拿着票去看演唱会,说明您已经买票了,才会让您进)。
14 、 expires_in:access_token 过期时间,因为这里是第三方服务器呼叫,所以 WordPress 微信服务器必须返回告知给第三方服务器过期时间,从而让第三方服务器更好处理。
15 、 access_token 使用注意事项:
(1)为了保密 WordPress APPsecrect,第三方需要一个 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 、 WordPress 微信 access_token 两小时过期时间的设计原因(自我理解):WordPress 微信的 token 两小时重新整理一次是因为第三方服务器接入 WordPress 微信服务器,目的是获取 WordPress 微信服务器中的资料,也就是所谓的第三方登陆,多用户通过第三方服务器登陆,第三方服务器再去 WordPress 微信平台获取资料,这样就需要一个授权的过程,也就是说 WordPress 微信服务器同意您某个第三方服务器获取资料才行,为了把控这个授权过程,不会因为授权之后就一直能获取 WordPress 微信服务器资料这种情况的发生,所以才有了两小时重新整理一次。
18 、 WordPress 微信服务器介面访问次数限制:WordPress 微信服务器介面访问限制次数是为了防止第三方服务器因为程序错误无限呼叫 WordPress 微信服务器从而使得 WordPress 微信服务器崩溃,所以才有的访问次数限制。
19 、签名验证:验证信息的确来自 WordPress 微信服务器(本专案中为:验证引数的确来自于本专案安卓客户端)。