REST API安全的当前智慧状态是什么?

时间:2012-04-26 13:00:58

标签: security rest oauth

我在网上收到有关首选REST API身份验证/授权机制的混合信号,尤其是对于移动应用程序。

  1. 有OAuth 1.0,但它声称比它需要的更复杂,并且不能很好地支持本机客户端(回调URL非常以浏览器为中心)。另一方面,有一个支持它的主要提供商(Twitter)。
  2. 然后有OAuth 2.0,它应该是1.0以上的改进,它在默认咒语中取消了客户端加密(用持有令牌代替),但是有些人认为{{3 }和it's broken by design。来自粗略提供者的SSL证书可以更容易地欺骗移动客户端,使其相信端点是受信任的权限。然而,两个主要的提供商(谷歌和Facebook)支持它。
  3. 然后有人,bearer tokens are no better than cookies
  4. 那是哪个?

2 个答案:

答案 0 :(得分:3)

这听起来像是一个对冲,但答案是"无论什么适合你的应用程序"。

像OAuth和OpenID这样的第三方认证系统有它们的位置,它们非常适合某些应用程序,特别是那些允许客户成为API用户而不必将其个人凭据转移到另一台服务器的系统系统

但是,您可能正在构建一个没有该约束或要求的系统,并且要求您的客户在您的服务器上创建一个帐户可能是合理的。在这种情况下,您可以使用HTTPS和Basic Auth显着简化事情。让客户端在相应的标头中传递其用户名/密码,并确保您的连接受SSL保护。或者,让客户端使用证书作为其凭据。

我建议你先详细说明" security"意味着你,并从头开始工作。考虑每个相关方面,如完整性保证,不可否认性,重放保护,客户端影响,性能和API可用性。从那里,确定您是否需要HTTPS /基本身份验证,或者您还需要添加API密钥,OAuth,OpenID,校验和等。

答案 1 :(得分:1)

我建议使用OAuth 2,但在客户端中进行额外的证书检查。如果您的证书来自Verisign,则无效其他CA的所有证书。确保始终在同一个CA上获取证书,除非您喜欢分发更新。

但是,最后,只有客户端才能验证与服务器的连接是否完全安全。别忘了。