加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

API密钥与JWT授权对比介绍

发布时间:2022-06-07 16:01:59 所属栏目:安全 来源:互联网
导读:对于某些用例,API密钥就足够了。但另一些情况下,出于安全和灵活的考虑,还需要JSON Web令牌(JWT)授权。所以要比较API密钥和JWT授权两个方案,具体方案还需具体分析。 所有API调用都需要一定程度的安全性和访问控制 具有合理ACL的API密钥可以在不增加太多开
  对于某些用例,API密钥就足够了。但另一些情况下,出于安全和灵活的考虑,还需要JSON Web令牌(JWT)授权。所以要比较API密钥和JWT授权两个方案,具体方案还需具体分析。
 
 
 
  所有API调用都需要一定程度的安全性和访问控制
  具有合理ACL的API密钥可以在不增加太多开销的情况下提供足够的安全性。但是,随着微服务的使用在各种大小任务中增加,API生态系统可能会需要像JWT授权方案这样更统一、更细粒度、更安全的方案。
  
  何时该考虑JWT授权
  API需要越来越灵活,也越来越需要保护。
 
  JWT授权不仅额外提高了安全级别(详见下文),还提供了一种更易于管理、更简单的方法来协调日常中使用大量的API网络。
 
  JWT通过生成包含用户和应用程序级别信息(加密或散列)的单个共享令牌来集中身份验证和授权,以帮助同一生态系统中的所有API确定允许令牌 持有者执行的操作。
 
  
  下面是一个在客户端javascript中公开可用的API密钥的示例:
 
  该代码包括一个App ID(app-id-BBRSSHR),它使用API密钥(temp-search-key-ere452sdaz56qsjh565d)进行搜索。
 
  App ID 是指一个面向用户的应用程序(如在线网站或流媒体服务)。API 密钥是临时的,它在一段时间后就过期,从而具有一定保护作用,能防止不必要的使用或滥用。
  
  复制
  use AlgoliaAlgoliaSearchSearchClient;
  $client = SearchClient::create(
      'YourApplicationID',
      'YourAdminAPIKey'
  );
  $index = $client->initIndex('demo_ecommerce');
  $index->saveObject(
    [
      'firstname' => 'Jimmie',
      'lastname'  => 'Barninger',
      'city'      => 'New York',
      'objectID'  => 'myID'
    ]
  );
 
  1.
  2.
  3.
  4.
  5.
  6.
  7.
  8.
  9.
  10.
  11.
  12.
  13.
  14.
  使用 JWT 令牌
  JWT令牌是一大串不可读的字符,其中包含的信息已隐藏和编码,被签名或加密算法覆盖。它由三部分组成:头部(header)、主体(body)和签名(signature),
 
  由句点分隔:Header.Body.Signature。
 
  复制
  EZPZAAdsqfqfzeezarEUARLEA.sqfdqsTIYfddhtreujhgGSFJ.fkdlsqEgfdsgkerGAFSLEvdslmgIegeVDEzefsqd
  1.
  EZPZAADSQFZEEZAREUARLEA是JWT头,其中包含以下信息:
 
  复制
  {
    "alg": "HS256",
    "typ": "JWT"
  }
  {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
  }
 
  1.
  2.
  3.
  4.
  5.
  6.
  7.
   {
    "sub": "1234567890",
    "name": "John Doe",
    "iat": 1516239022
  }
 
  1.
  2.
  3.
  4.
  5.
  fkdlsqEgfdsgkerGAFSLEvdslmgIegeVDEzefsqd是JWT签名 ,它如头部所示,通过使用 HS256 散列方法组合头部、主体和共享私钥组合生成。
 
  复制
  HMACSHA256(
    base64UrlEncode(header) + "." +
    base64UrlEncode(payload),
    secret)
 
  1.
  2.
  3.
  4.
  这样你就得到了相应的令牌:Header.Body.Signature:
 
  复制
  EZPZAAdsqfqfzeezarEUARLEA.sqfdqsTIYfddhtreujhgGSFJ.fkdlsqEgfdsgkerGAFSLEvdslmgIegeVDEzefsqd
  1.
  关于身份验证(Authentication)和授权(Authorization)

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读