access_token 分析
2018-03-13 13:35
169 查看
微信信的access_token 分析 保留 512 个字符空间
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。
公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在开发模式中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用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 个参数: signature、timestamp、nonce。其中 timestamp 是时间戳、nonce 是一个随机数、signature 是对 timestamp、nonce 和 Token 进行 SHA1 加密后的字符串。SHA1 的加密过程是不可逆的,即不能通过 signature、timestamp 和 nonce 计算出 Token 是什么。
2)在公众账号服务器收到 timestamp、nonce 和 signature 之后,同样对 nonce、timestamp 和 Token 使用 SHA1 加密算法,得到自己的签名,如果自己的签名和请求中的 signatrue 是一样的,那么说明请求是来自微信后台而不是恶意第三方。
注意 恶意的第三方有可能会截获到微信后台发过来的 signature、timestamp 和 nonce 三个参数,然后直接用这个三个参数来对公众账号服务器发起请求。按照上面的逻辑是无法判断的出这是个恶意的请求。这种攻击称为“replay 攻击”。这种攻击方式的防御方法很简单:加上对 timestamp 的校验。收到请求之后,我们将请求包中的 timestamp 和当前时间比较,如果误差大于一定的值就可以认为这个请求是恶意的。这里不能做相等的比较,因为数据在网络上传输需要时间,同时各个服务的本地时间也是有一些差异的。
timestamp,当前的时间戳,这个是可以获取的。必须再加个nonce随机字符串去与token排序再SHA1加密与signature比较判断是否来自微信服务器请求。
微服务 位数197位
1. POST /api/User/UserToken
[b]参数(采用Body传值方法)[/b]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. }
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。
公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在开发模式中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用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 个参数: signature、timestamp、nonce。其中 timestamp 是时间戳、nonce 是一个随机数、signature 是对 timestamp、nonce 和 Token 进行 SHA1 加密后的字符串。SHA1 的加密过程是不可逆的,即不能通过 signature、timestamp 和 nonce 计算出 Token 是什么。
2)在公众账号服务器收到 timestamp、nonce 和 signature 之后,同样对 nonce、timestamp 和 Token 使用 SHA1 加密算法,得到自己的签名,如果自己的签名和请求中的 signatrue 是一样的,那么说明请求是来自微信后台而不是恶意第三方。
注意 恶意的第三方有可能会截获到微信后台发过来的 signature、timestamp 和 nonce 三个参数,然后直接用这个三个参数来对公众账号服务器发起请求。按照上面的逻辑是无法判断的出这是个恶意的请求。这种攻击称为“replay 攻击”。这种攻击方式的防御方法很简单:加上对 timestamp 的校验。收到请求之后,我们将请求包中的 timestamp 和当前时间比较,如果误差大于一定的值就可以认为这个请求是恶意的。这里不能做相等的比较,因为数据在网络上传输需要时间,同时各个服务的本地时间也是有一些差异的。
timestamp,当前的时间戳,这个是可以获取的。必须再加个nonce随机字符串去与token排序再SHA1加密与signature比较判断是否来自微信服务器请求。
微服务 位数197位
1. POST /api/User/UserToken
[b]参数(采用Body传值方法)[/b]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. }
相关文章推荐
- spring-oauth-server实践:access_token的有效期分析
- 微信开发中网页授权access_token与基础支持的access_token异同
- [3]java微信开发-获取access_token
- 微信公众号获取access_token
- atitit. access token是什么??微信平台公众号开发access_token and Web session保持状态机制
- 新浪开放平台:解决获取access_token抛 21323 异常,以及接口调用
- 微信支付java版本之获取Access_token
- 深入分析access/trunk/hybrid
- 正确调用access_token的方式
- Delphi Access Violation错误的分析
- 获取access_token
- 微信企业号开发之access_token接口调用示例
- 微信公众号access_token的获取与存储
- 微信开发——网页授权access_token与全局access_token获取用户信息的接口
- RT-Thread finsh源码分析: finsh_token.c
- 微信公众号的搭建-第四天(2)-获取并缓存access_token
- 微信公众号开发-开发环境搭建并通过java代码获取微信access_token
- 微信开发中网页授权access_token与基础支持的access_token异同
- 微信参数说明-access_token
- 【转载】netstat--查看服务器[有效]连接数--统计端口并发数--access.log分析