Code Monkey home page Code Monkey logo

oauth2tree's Introduction

Oauth2Tree

权限控制

背景:

      oauth就是在这种场景下顺势而生的,oauth2是一个简化版。oauth并不需要获取到用户的账号
      密码,而是仅仅获得用户在平台上某部分资源的权限。而这个权限的凭证,就是token。打个
      比方,加入你是一个大老板(授权和资源服务器),你拥有一个由众多小仓库组成的大仓库。当
      某天有个生意伙伴(第三方服务器)要求租赁仓库中小仓库1(资源),他向你交了押
      金(secret),你交给他一把小仓库1的钥匙(token)给他,这个伙伴就可以使用你大仓库中
      小仓库1,而不是整个仓库。 

      这样,第三方服务器不需要知晓用户的密码,也能获取到相应的资源。而且平台服务器能控制第
      三方开发者的权限,部分开放给用户。oauth认证方式有四种,一般用的是客户端认证模式。 
微信access_token与ticket

     在接入微信公众平台的开发,微信的相关接口都需要认证才能使用。access_token是当前公众
     号全局性的令牌。当你申请的是一个普通订阅号,那么你的access_token就只能使用订阅号的
     部分权限,同样,如果是认证服务号,权限就更多了,比如可以进行微信支付。 

     在接入jsapi的时候(需要调到其分享朋友功能),需要进行url签名,官方文档中声明既需要
     定时获取access_token,再通过access_token去获取jsapi_ticket,最后通过ticket与随
     机字符串和时间戳与url进行加密。这里通过token再去获取ticket,而不是直接用token进行
     签名,原因是这个ticket仅仅针对的jsapi的,还有,ticket有用于调用微信卡券
     的api_ticket、用于兑换二维码的ticket等。所以针对jsapi,微信又进行的更细粒度的授权。
     为了更加安全,微信规定token和ticket的有效期都是2小时,这个后续可能改动,所以我们需
     要定时去获取新的token或者ticket。
微信accesstoken与服务器token区别

     这个是微信与我们自定义服务器设定的契约。当我们通过上图接入到微信服务器,微信服务器会
     将其收到的信息推送到我们的业务服务器,如用户留言,我们可以根据业务自定义返回给用户的
     信息。注意:这里,是微信请求我们业务服务器。用户如何保证信息是微信发来的呢?这就是通过
     这个契约token,微信发过来的信息通过这个我们预留在公众号后台的token进行加密。而不可能
     是随机的,微信有成千上万个第三方服务器(看看小程序和活跃的公众号就行),如果第三方服
     务器去设定会过期的token,那么微信可做不到定时去轮序啊! 

     而access_token是我们服务器请求微信服务器,微信作为统一的资源授权,自然可以定时更
     换token,用户通过其随机的token进行签名后,微信校验确实是我们业务服务器发送过来的
    (防护窃取,dns劫持等伪造),才肯放权。 

     了解两者的区别,就明白了微信为什么会这么设计了。

oauth2tree's People

Contributors

qiuqiuxiaomaomi avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.