我应该将哪个基本身份验证,摘要身份验证和Oauth用于我的Web应用程序,以允许用户通过Restful API调用访问资源.
取代基本和摘要身份验证不是Oauth更好的解决方案吗?
在这里对许多细节进行着色,但是:
http basic:在Authorize标题中的clear中发送用户名和密码
http摘要:发送用户名和密码,其中密码已由服务器提供的nonce进行哈希处理
oauth的两个版本最初旨在授予第三方访问不属于它的资源(例如,我允许移动照片应用程序代表我发布到Facebook),而无需向第三方提供我的凭据.这两个协议基本上如下工作:
从移动照片应用程序,用户被导向facebook的登录页面
一旦他们登录,他们将被重定向回带有代码的移动照片应用程序.
移动照片应用程序然后将此代码兑换为访问令牌
移动照片应用程序然后可以向Facebook请求将我的照片发布到我的墙上.
oauth1.0a:比oath2更安全,但更难实现也需要签署所有请求.
oauth2:依赖于ssl的安全性,不需要请求签名.虽然它的主要作者已经放弃了该项目,因为他觉得它不符合其最初的设计目标(安全性,互操作性),它被Facebook和谷歌广泛使用.
这里有一些我觉得有用的文章:
https://blog.apigee.com/detail/api_authentication_and_how_it_got_that_way_from_http_basic_to_oauth_2.0
https://www.stormpath.com/blog/secure-your-rest-api-right-way
没有足够的mojo链接到rfcs,但这些是确定的来源,如果稍微难以消化.