access_token 分析

微信信的access_token 分析  保留 512 个字符空间

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。

公众号可以使用AppIDAppSecret调用本接口来获取access_tokenAppIDAppSecret可在开发模式中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。

接口调用请求说明

http请求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明

参数 是否必须 说明

grant_type 是 获取access_token填写client_credential

appid 是 第三方用户唯一凭证

secret 是 第三方用户唯一凭证密钥,既appsecret

返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

{"access_token":"ACCESS_TOKEN","expires_in":7200}​

Token 是一个任意的字符串,你提交 Token 给微信后台之后,只有你和微信后台知道这个字符串是什么,也就是只有微信后台和我们的公众账号服务器知道这个字符串。于是 Token 就成了这两台服务器之间的密钥,它可以让公众账号服务器确认请求是来自微信后台还是恶意的第三方。具体过程如下:
1)微信后台在发送数据给公众账号服务器的时候,会额外带上3 个参数: signaturetimestampnonce。其中 timestamp 是时间戳、nonce 是一个随机数、signature 是对 timestampnonce Token 进行 SHA1 加密后的字符串。SHA1 的加密过程是不可逆的,即不能通过 signaturetimestamp nonce 计算出 Token 是什么。
2)在公众账号服务器收到 timestampnonce signature 之后,同样对 noncetimestamp Token 使用 SHA1 加密算法,得到自己的签名,如果自己的签名和请求中的 signatrue 是一样的,那么说明请求是来自微信后台而不是恶意第三方。

注意 恶意的第三方有可能会截获到微信后台发过来的 signature、timestamp 和 nonce 三个参数,然后直接用这个三个参数来对公众账号服务器发起请求。按照上面的逻辑是无法判断的出这是个恶意的请求。这种攻击称为“replay 攻击”。这种攻击方式的防御方法很简单:加上对 timestamp 的校验。收到请求之后,我们将请求包中的 timestamp 和当前时间比较,如果误差大于一定的值就可以认为这个请求是恶意的。这里不能做相等的比较,因为数据在网络上传输需要时间,同时各个服务的本地时间也是有一些差异的。

 timestamp,当前的时间戳,这个是可以获取的。必须再加个nonce随机字符串去与token排序再SHA1加密与signature比较判断是否来自微信服务器请求。

微服务  位数197

1. POST /api/User/UserToken

参数(采用Body传值方法)

1. {username: "xx", password: "123456"}

返回值

正确

1. {

2.   "data":

3.       {"accesstoken":"xxx"},

4.      "flag":1,

5.      "success":1,

6.      "expired":0

7.  }

错误

1. {

2. flag:1,

3. expired :0,

4. success : 0,

5. err :{

6.          code :"100001",

7.          Msg :"用户名或者密码错误"

8.      }

9. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

javafanwk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值