Oauth 构建RESTFul API,如何进行身份验证

Oauth 构建RESTFul API,如何进行身份验证,oauth,Oauth,我正在构建一个RESTFul API,并想知道进行auth的最佳方法是什么?用户需要进行身份验证。我知道三种方法: 1.)在每个RESTFul请求中传递API密钥: http://api.mydomain.com/api-key-here/get-users 这很好,因为开发人员只需将URL字符串复制到浏览器中,就可以立即开始使用API。但是,是否存在任何潜在的安全风险 2.)每个请求都会在请求头中传递API密钥 这似乎更安全,但开发人员不能通过浏览器发出请求。卷曲是必需的 3)oAuth 我

我正在构建一个RESTFul API,并想知道进行auth的最佳方法是什么?用户需要进行身份验证。我知道三种方法:

1.)在每个RESTFul请求中传递API密钥:

http://api.mydomain.com/api-key-here/get-users
这很好,因为开发人员只需将URL字符串复制到浏览器中,就可以立即开始使用API。但是,是否存在任何潜在的安全风险

2.)每个请求都会在请求头中传递API密钥

这似乎更安全,但开发人员不能通过浏览器发出请求。卷曲是必需的

3)oAuth

我必须承认我对它了解不多,但似乎很受欢迎。我担心的是,这是开发人员开始使用API的障碍。他们首先必须熟悉oAuth,并对其进行设置


想法?非常感谢。

如果您担心会给开发人员带来高昂的入门成本,我建议您使用basic auth,但要通过https运行API


我用它来做这件事,效果非常好。我使用了一个API密钥,并将其与一个秘密结合,作为基本身份验证的用户名/密码组合。

我使用了以下技术:。此解决方案使用API IDAPI secret和UNIX时间戳的MD5散列,并在HTTP头中传递。此身份验证方法与所使用的相同

此链接引用并包含一个完整的入门工具包,用于创建具有身份验证成员资格和*API使用计量*以及支持EF数据库的API


至于测试可以使用自定义头执行HTTP调用的服务,而不是使用Curl。

是的,这将是SSL,但安全性有些重要。如何使用密钥将用户名/密码组合绑定到一起?用户是否在每个RESTFul请求URL中同时传递API密钥和密钥?是的。我使用API密钥作为用户名,API密码作为密码。这是一种非常简单、易于实现的方法,如果通过SSL运行,任何人都很难访问凭据。如何在URL中发送用户名和密码?或者用户必须在标题中设置它吗?如果用户选择,可以直接在URL中设置它,毕竟它是HTTP basic auth,但您不应该这样做。而是设置适当的标题。Base64对其进行编码,并使用
授权
标题传递。感谢您的回答。你让我避免事情过于复杂化