总结一下token

一直对token的做用不大明白. ###一.微信公众号算法

开发微信公众号的时候,咱们须要在微信公众平台的配置界面 写一个token和咱们服务器端的url接口.服务器

普通用户和公众号交互的具体流程是:用户发送一条文本或其余信息,该信息发送到微信的服务器,微信的服务器向以前咱们填写的服务器的url接口,推送该用户发送的信息,为了保证良好的体验,微信但愿咱们能在5秒内做出响应。微信

微信每次推送信息给咱们的服务器时,都会直接在url后携带几个参数,signature,timestamp,nonce 具体的验证: 把token(咱们指定的,固然是已知), timestamp,nonce 三个值以字典序排序后,进行sha1加密。 和signature 比较,若是相同,则可认定是微信在访问咱们的接口,而不是其余恶意来源网络

当咱们访问微信的接口时,微信要求咱们必须携带一个access_token. 这个access_token是哪里来的呢?咱们能够看到开发者设置界面有一个app_id, app_sercet。咱们能够根据这个两个参数,访问一个获取access_token的接口便可返回. 之后,咱们访问微信提供的接口都携带access_token便可,注意,access_token是有时间限制的,默认过时时间为7200秒,天天获取access_token的次数也是有上限的.只要按照规定来,彻底是够用的..app

经过access_token,微信服务器也能够肯定是哪一个微信公众号的合法请求,而不是恶意用户微信公众平台

###二.公司的项目里用到的token加密

咱们的Android端(其余同理)访问接口时,必将携带下面的参数url

reqtime, user, token, source Android端这里的source和user 都是'Android'.排序

验证: 先看source渠道,根据user,source,key,reqtime一块儿md5. 看是否是和token相等。这里面只有key不是经过网络传输过来的. 这里能够还能够根据reqtime, 给定一个时间约束,一旦超过指定时间,则视为无效token

三.比较

项目中的验证方法和微信仍是相似的.只是名字不同罢了. 都是本地持有一个私有的字符串(微信公众号里叫token,咱们叫key)这里统一叫S, 这个S是不变的,任什么时候候都不须要经过网络传输的 根据这个S, 和其余一些参数,好比A,B . 经过加密生成一个新的字符串C.咱们只须要传输A,B,C便可

对方拿到A,B,C三个参数后,再按照以前的算法,A,B,S加密看是否是等于C. 只要等于C,说明就是合法的来源

相关文章
相关标签/搜索