我正在为我维护的其中一个应用程序构建RESTful API.我们目前正在寻求构建各种需要更多受控访问和安全性的东西.在研究如何保护API时,我发现了一些关于使用什么形式的不同意见.我已经看到一些资源说HTTP-Auth是要走的路,而其他人更喜欢API密钥,甚至其他人(包括我在SO上找到的问题)都发誓OAuth.
然后,当然,那些喜欢API键的人说,OAuth是为代表用户访问的应用程序而设计的(据我所知,例如使用你的Facebook帐户登录非Facebook网站),而不是用户直接访问他们专门注册的网站上的资源(例如访问Twitter服务器的官方Twitter客户端).但是,OAuth的建议似乎甚至是最基本的身份验证需求.
那么我的问题是 - 假设它都是通过HTTPS完成的,三者之间有哪些实际差异?什么时候应该考虑其他人?
我发现了许多文章,许多人建议在API Key上使用OAuth.根据我的理解,在OAuth中,我们终于获得了访问令牌,并且它有效期很多天.一个例子是,QuickBooks在线OAuth令牌有效期为6个月.
因此,访问令牌等同于API Key.谁得到它,应该像API密钥一样安全.OAuth调用应该通过HTTPS进行,类似于基于API Key的调用.
与OAuth相比的另一个优势是授权.但我们可以使用API Key模型做同样的事情.例如,我们可以在数据库中定义规则,例如这些API密钥可以访问这些API.
现在,OAuth的真正优势是什么?如果我们实施OAuth,我们必须要求所有客户在其服务器中安装OAuth支持库.对他们而且对我们来说,这是一项复杂的任务.而在API Key模型中,它是一个简单的Web调用,没有其他额外的库和复杂性.
我的目的只是为了更好地理解OAuth,而不是与API Key模型进行比较和争论.
注意:
我不是在谈论用户必须查看和授予权限的Google和LinkedIn类型的模型.我只是在谈论我们为自己的客户提供的API.
感谢您的帮助.