英文原文: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签名生成中包括 “请求时间戳”?
暂无评论内容