【问题标题】:Build a REST WebService with GAE using OAuth使用 OAuth 使用 GAE 构建 REST WebService
【发布时间】:2012-02-21 07:47:44
【问题描述】:

我即将从头开始构建一个社区平台。我们将首先创建 WebServices,并且社区可能有一些第三方组件,因此拥有可靠的 WebServices 是个好主意。

由于服务是无状态的,我们需要对每个调用进行身份验证。尽管我们现在是唯一的消费者,但为我们的服务提供者实施 OAuth 协议来执行此任务是否是个好主意?

顺便说一句:我们会在网站启动之前提供移动应用程序。

【问题讨论】:

    标签: google-app-engine rest oauth


    【解决方案1】:

    OAuth 的全部意义在于允许其他网站(消费者)访问您的数据(您是提供者)。由于您是数据的唯一消费者,因此在此开发阶段无需实施 OAuth。

    精益求精,快速构建一些东西,并把它放在用户/测试人员面前。只有在这一点上,您才会发现真正的错误并获得有关服务的反馈,以便您可以改进它并引导开发朝着正确的方向发展。

    注意: OAuth as provided by App Engine(第二段)仅支持拥有 Google 帐户的用户(即使使用了 OpenID)。

    【讨论】:

    • 好吧,这是有道理的。我将尽可能多地考虑 OAuth 以供以后实施。
    • 错了,OAuth 目前被广泛用于仅验证身份(即您是谁),而没有真正访问您的任何数据。例如,Google 推荐使用 OAuth2.0 进行身份验证。除了id 和可能email 之外,您不要求任何范围。这是正确验证 Android 用户身份的唯一方法。
    • @DzmitryLazerka:OAuth 被定义为授权标准而非身份验证标准。当然,在现实生活中,消费者仅使用 OAuth 进行身份验证,但这不是 OAuth 的设计目的。此外,OAuth 没有定义身份验证,因此每个 OAuth 提供者都以自己的方式实现身份验证,这让集成变得很痛苦。
    • 对。但正如我所说,目前 OAuth 实际上仅用于大型市场参与者的身份验证。例如,Twitter API 甚至将 OAuth 称为 身份验证协议,尽管这是错误的。
    • 顺便说一下,最新的身份验证协议“OpenID Connect”建立在OAuth2.0 之上。正如他们所说,它“允许根据授权服务器执行的身份验证来验证最终用户的身份”。它现在是在 Android 上对用户进行身份验证的推荐方式。安卓账号不需要是GMail,也可以自己搭建授权服务器。
    【解决方案2】:

    根据我的经验,我以与身份验证无关的方式创建了 REST WS:jersey 方法接受所有内容,然后有几个过滤器来验证请求。 我对 Web 部件使用 OpenId 身份验证,对 API 使用 OAuth 和 BASIC AUTHENTICATION(使用 SSL)。

    可能不需要从一开始就创建所有内容,但请记住尽可能将 REST 端点与身份验证分离:当您想要发布 API 时,您将受益匪浅。

    最后一个“哲学”的东西:OAuth 不是完全无状态的,实际上你有一个临时令牌来验证用户,它类似于浏览器中的会话!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 2012-05-23
      相关资源
      最近更新 更多