简单、安全的API认证系统

2024-05-21

我有一个简单的 REST JSON API,供其他网站/应用程序访问我网站的一些数据库(通过 PHP 网关)。基本上该服务的工作原理如下:调用 example.com/fruit/orange,服务器返回有关橙子的 JSON 信息。问题是:我只想要我允许访问此服务的网站。通过简单的 API 密钥系统,任何网站都可以通过从授权网站的(可能的)客户端代码复制密钥来快速获取密钥。我看过 OAuth,但对于我正在做的事情来说似乎有点复杂。解决方案?


您应该使用 OAuth。

实际上有两种 OAuth 规范,3 足版本和 2 足版本。三足版本是最受关注的版本,它是not您想使用的那个。

好消息是,2 足版本完全符合您的要求,它允许应用程序通过共享密钥向另一个应用程序授予访问权限(与 Amazon 的 Web 服务模型非常相似,您将使用 HMAC-SHA1 签名方法)或通过公钥/私钥系统(使用签名方法:RSA-SHA1)。坏消息是,它的支持还不如 3 足版本那么好,因此您可能需要做比现在更多的工作。

基本上,2-legged OAuth 只是指定一种“签名”(计算哈希值)多个字段的方法,其中包括当前日期、称为“nonce”的随机数以及请求的参数。这使得很难模拟对您的网络服务的请求。

OAuth 正在缓慢但肯定地成为这类事情的公认标准——从长远来看,如果您接受它,您将受益匪浅,因为人们可以利用各种可用的库来做到这一点。

它比您最初想要了解的更复杂 - 但好消息是很多人已经在上面花了很多时间,所以您知道您没有忘记任何事情。一个很好的例子是,最近 Twitter 发现了 OAuth 安全性中的一个漏洞,社区目前正在努力弥补这个漏洞。如果你发明了自己的系统,你就必须自己解决所有这些问题。

祝你好运!

Chris

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单、安全的API认证系统 的相关文章

随机推荐