TOKEN设计

TOKEN设计

  1. Api_Tokenphp

    1. 首先须要知道API是什么?数据库

      API(Application Programming Interface)即应用程序接口。你能够认为 API 是一个软件组件或是一个 Web 服务与外界进行的交互的接口。而咱们在这里要谈论的,是做为一家公司如何跟外界进行交互。从另外一个角度来讲,API 是一套协议,规定了咱们与外界的沟通方式:如何发送请求和接收响应。api

    2. API的特色:restful

      • 由于是非开放性的,因此全部的接口都是封闭的,只对公司内部的产品有效;
      • 由于是非开放性的,因此OAuth那套协议是行不通的,由于没有中间用户的受权过程;
      • 接口分为须要用户登陆才能访问的和不须要用户登陆就可访问的;
    3. 职责mvc

      保持接口访问的隐蔽性和有效性,保证接口只有可信任的来源才能够访问。ui

    4. 模式:加密

      如今的接口基本是mvc模式,URL基本是restful风格,URL大致格式以下:设计

      http://www.api.com/模块名/控制器名/方法名?参数名1=参数值1&参数名2=参数值2

      生成规则参考以下:rest

      $api_token = md5 ('模块名' + '控制器名' + '方法名' + '时间' + '加密密钥');
    5. 例子code

      <?php
      //获取GET参数值
      $module = $_GET['module'];
      $controller = $_GET['controller']
      $action = $_GET['action'];
      $client_id = $_GET['client_id'];
      $api_token = $_GET['api_token'];
      
      //根据客户端传过来的client_id,查询数据库,获取对应的client_secret
      $client_secret = getClientSecret($client_id);
      
      //服务端从新生成一个api_token
      $api_token_server = md5($module . $controller . $action . date('Y-m-d', time()) . $client_secret);
      //客户端传过来的api_token与服务端生成的api_token进行校对,若是不相等,则表示验证失败
      if ($api_token != $api_token_server) {
      exit('access deny'); //拒绝访问
      }
      //验证经过,返回数据给客户端
      ?>
  2. User_Token

    1. 职责

      保护用户的用户名及密码屡次提交,以防密码泄露。

    2. 模式

      登陆成功后,服务端返回一个user_token,生成规则参考以下:

      $user_token = md5('用户的uid' + 'Unix时间戳' + '证书私钥')

      服务端生成user_token后,返回给客户端(本身存储),客户端每次接口请求时,若是接口须要用户登陆才能访问,则须要把 user_id与user_token传回给服务端,服务端接受到这2个参数后,须要作如下几步:

      1. 检测user_token的有效性;
      2. 删除过时的user_token表记录;
      3. 根据user_id,user_token 获取表记录,若是表记录不存在,直接返回错误,若是记录存在,则进行下一步;
      4. 更新user_token 的过时时间(延期,保证其有效期内连续操做不掉线);
      5. 返回接口数据;
相关文章
相关标签/搜索