RESTful API身份验证/安全性

4
我正在开发适用于GAE Python的RESTful API,目前我正试图找出保护此API的最佳方法。我在该应用程序上拥有自己的成员/身份验证机制。
那么,最好的方法是什么呢?
  • 使用公钥/私钥对
  • 成为OAuth提供者
  • HTTP身份验证(对我来说似乎非常薄弱)
  • 其他?
2个回答

2
您可以使用Google服务帐户进行用户身份验证。但是,人们仍然可以注册帐户并使用您的API,这肯定会增加您的应用引擎费用。他们在2012年的Google I/O大会上介绍了Google Cloud Endpoints。您将拥有一个客户端ID,仅在您的客户端应用程序(Android、iOS)中使用。

Google I/O 2012 - 使用Web API构建Android应用程序(与Yaniv Inbar和Sriram Saroop一起)

Google I/O 2012 - 为Android、iOS和Web构建移动应用程序引擎后端

如果您感兴趣,可以尝试在以下网址注册受信任的测试者:

http://endpoints-trusted-tester.appspot.com/


如上所述,我有自己的身份验证/会员机制,不使用谷歌账户进行身份验证。我会查看I/O视频。实际上找不到任何Python端点的示例。 - aschmid00
1
很遗憾,在 I/O 上我们并没有准备好任何 Python 示例,但我们最近与可信测试人员分享了一些样例 Python 代码。我肯定会鼓励您注册。 - Dan Holevoet

2

首先,放弃HTTP身份验证。在真正的REST API中,它不被推荐使用,因为它驻留在cookies上。

我会选择OAuth。有一个名为appengine_oauth_provider的库,可以帮助您开始实现自己的提供程序。


谢谢,看起来这个库非常老了,我们有其他的替代品吗? - Cuong Thai
只是好奇:您是否有关于REST API和cookies不可调和的参考资料? - Drux
@Drux,REST应该是无状态的,这意味着一个请求不应该依赖于之前的请求(例如身份验证请求)。 - Christopher Ramírez
@ChristopherRamírez 从“纯粹”的意义上讲,这是公平的(尽管人们或许可以争辩OAuth2身份验证令牌也带有一些状态)。 - Drux
“HTTP Auth”通常指的是https://en.wikipedia.org/wiki/Basic_access_authentication - 这是无状态的,因为您需要将头添加到每个请求中。因此,它不依赖于先前的请求。只要由https保护,就是安全的。 - Erik Forsberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接