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