【问题标题】:RESTful API authentication/securityRESTful API 身份验证/安全性
【发布时间】:2012-09-19 11:02:05
【问题描述】:

我正在为我在 GAE python 上的应用程序开发一个 RESTful API,现在我正试图找出保护这个 API 的最佳方法。 我在这个应用上有自己的成员/身份验证机制。

最好的方法是什么?

  • 拥有公钥/私钥对
  • 成为 OAuth 提供者
  • HTTP 身份验证(对我来说似乎很弱)
  • 其他??

【问题讨论】:

    标签: api google-app-engine authentication python-2.7 api-key


    【解决方案1】:

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

    Google I/O 2012 - Building Android Applications that Use Web APIs with Yaniv Inbar and Sriram Saroop

    Google I/O 2012 - Building Mobile App Engine Backends for Android, iOS and the Web

    如果您有兴趣,请尝试在

    注册受信任的测试员

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

    【讨论】:

    • 如上所述,我有自己的身份验证/成员机制,我不使用谷歌帐户进行身份验证。将检查 I/O 视频。真的找不到任何关于端点在 python 中的样子的例子。
    • 不幸的是,我们在 I/O 上没有准备好任何 Python 示例,但我们最近与受信任的测试人员共享了一些示例 Python 代码。我肯定会鼓励你注册。
    【解决方案2】:

    首先,放弃 HTTP Auth。不建议在真正的 REST API 中使用它,因为它驻留在 cookie 上。

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

    【讨论】:

    • 谢谢,图书馆好像很老了,有其他的吗?
    • 只是好奇:你有 REST API 和 cookie 不可调和的参考吗?
    • @Drux,REST 应该是无状态的,这意味着请求不应依赖于前一个请求(即身份验证请求)。
    • @ChristopherRamírez 从“纯粹”的意义上说足够公平(尽管有人可能会争辩说 OAuth2 身份验证令牌也带有一些状态)。
    • "HTTP Auth" 通常指的是en.wikipedia.org/wiki/Basic_access_authentication - 它是无状态的,因为您将标头添加到每个请求中。所以它不依赖于前一个。只要受到 https 的保护,它就是安全的。
    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 2013-08-21
    • 2014-04-30
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多