文章目录
显示
英文原文:https://blog.bytebytego.com/p/how-to-design-a-secture-web-api-access
译文微排版如下:
如何为你的网站设计安全的网络API访问?
当我们向用户开放网络API访问时,我们需要确保每个API调用都经过认证。这意味着用户必须是他们所声称的人。
两种常见的方式
在这篇文章中,我们探讨两种常见的方式。
1. 基于令牌的认证
2. HMAC(基于哈希的消息认证码)认证
工作原理
下图说明了它们如何工作
基于令牌的认证
第1步 – 用户在客户端输入密码,客户端将密码发送给认证服务器。
第2步–认证服务器对凭证进行认证,并生成一个有到期时间的令牌。
第3步和第4步–现在,客户端可以用HTTP头中的令牌发送请求,访问服务器资源。这种访问是有效的,直到令牌过期。
基于HMAC
这种机制通过使用哈希函数(SHA256或MD5)生成一个消息认证码(签名)。
步骤1和2 – 服务器生成两个密钥,一个是公共APP ID(公钥),另一个是API密钥(私钥)。
第3步 – 我们现在在客户端生成一个HMAC签名(hmac A)。这个签名是用图中列出的一组属性生成的。
第4步 – 客户端发送访问服务器资源的请求,HTTP头中含有hmac A。
第5步 – 服务器收到请求,其中包含请求数据和认证头。它从请求中提取必要的属性,并使用存储在服务器端的API密钥来生成一个签名(hmac B。)
步骤6和7 – 服务器比较hmac A(在客户端生成)和hmac B(在服务器端生成)。如果它们匹配,请求的资源将被返回给客户。
问题 – HMAC认证如何确保数据的完整性?为什么我们要在HMAC签名生成中包括 “请求时间戳”?
- 转载或引用本文内容,请保留原文链接并注明来源。
- 本站内容主要用于信息整理、技术研究与经验分享,不对第三方产品或服务的可用性、完整性作出任何明示或暗示的保证。
- 部分内容可能来源于公开网络或开源社区,如涉及版权或其他合法权益问题,请通过下方联系方式与我们联系,我们将在核实后及时处理。
- 本文所提及的工具、项目或解决方案仅供学习与研究参考。如涉及商业使用,请自行确认并遵守相关软件、平台或服务的授权条款。
- 反馈与联系(# 替换为 @):feedback#abskoop.com


评论(0)