宁静的API认证推荐?

时间:2010-08-20 13:56:10

标签: api rest restful-authentication

我正在为第三方开发几个RESTful API来调用,这些API需要身份验证(基于apikey和秘密)和授权(基于HTTP方法和URI)。

我们可以重用哪些现有软件阻止我推出自己的安全层实现吗?

3 个答案:

答案 0 :(得分:7)

HTTP为您授予了对此的支持,因此您无需重新发明轮子

使用:

  • HTTP Auth Basic(使用SSL绕过纯文本密码提交问题)
  • HTTP Auth Digest

Auth Digest具有优势,它不会以明文形式传输passowrd并处理重放攻击(使用nonce)。

我们使用HTTP Auth Digest(Tomcat servlet容器直接支持它),我们对此感到满意。

编辑:有些客户有Digest问题(不是那么简单),所以这些天我会选择Basic和SSL。 Advantage for Basic也是您可以抢先认证(在第一次请求中发送用户:pwd)。

答案 1 :(得分:2)

如果您使用Ruby on Rails(3.2.0或更高版本)构建API,请查看restful_api_authentication gem - https://rubygems.org/gems/restful_api_authentication

答案 2 :(得分:0)

您可以独立于您的技术实施某些系统,例如AWS使用。

  • 每个已注册的用户必须拥有用户ID和秘密访问密钥。
  • 每个请求必须使用SAK签名,并且必须包含userid。 (也考虑时间戳)。
  • 给定用户标识的服务器从DB检索SAK并再次签署请求,如果签名很多,则返回错误。

实现并不太难但你需要考虑每个服务器请求,要求查询商店以检索SAK。一种选择是使用NoSQL DB或类似的(如Redis或memcache)来存储用户ID / sak。