我的 Web Apps API 是不是需要 Oauth2

Posted

技术标签:

【中文标题】我的 Web Apps API 是不是需要 Oauth2【英文标题】:Do I need Oauth2 For my Web Apps API我的 Web Apps API 是否需要 Oauth2 【发布时间】:2014-10-25 23:56:00 【问题描述】:

我正在尝试构建一个基于 express.js / node.js 的 REST API。我有几个问题...

    如果我现在只关心 Web 应用程序(不一定是手机应用程序),我是否需要基于令牌/oauth 1 或 2 安全性来保护我的 api?

    是否有任何资源可以学习如何从头开始构建它?我已经阅读了谷歌搜索“rest api with oauth2 authentication express.js”的前 3 页,但我仍然没有掌握它。

【问题讨论】:

Oauth 是关于签署 3rd 方客户端的请求,如果您不想创建公共 API,则不需要它。按节点有 express 资源或 restify 是很好的起点。 【参考方案1】:

你想在节点中做一个 REST API 很好。它非常适合构建基于 API 的请求。

对于您的问题:

    如果您只是构建一个基本的 API,带有简单的 GET 和 POST 请求,那么您可能想问自己,您正在显示或操作的数据是否需要“安全性”。如果不是,则很可能不需要实施 OAuth。

但如果您的数据是敏感数据,例如私人用户数据,那么您需要在 API 上放置某种安全层。此外,使用 OAuth 或其他基于令牌的安全性可以帮助您在整个用户群中构建更好的权限检查。

    您首先需要掌握 OAuth 的概念。一旦您了解了 OAuth 的工作原理,那么用您选择的语言实现它就真的很容易了。 以下是一些关于如何更好地理解 OAuth 的好读物

http://www.slideshare.net/MindfireSolutions/oauth-and-rest?qid=09a7d224-78bb-4b47-8957-3f0a0ce809a4&v=qf1&b=&from_search=3

有关 OAuth 的更多详细信息:https://www.rfc-editor.org/rfc/rfc6749

同样,一旦您了解了 OAuth 的工作流程,您就可以轻松实现它。 :P

【讨论】:

我正在创建一个 SAAS 应用程序,我想我将使用基本的电子邮件/md5 加密密码,就像我在 php 中构建它一样。我正在阅读oauth,但似乎我不需要那个。我不打算将其作为第三方 api,因此只是为了让用户进入我的网站并登录,我认为一个简单的登录解决方案(例如针对数据库检查用户名/密码)就足够了。同意还是不同意? 看起来很合理。如果您觉得需要,您可以随时添加 OAuth。 如果是这样,那么我认为你不需要 OAuth :)【参考方案2】:

    这与您将 REST 服务器用于 Web 应用程序还是用于任何其他客户端无关。如果该服务在互联网上可用,您应该将任何客户端应用程序视为“敌人”。我的意思是您不应该依赖任何“受信任的”客户端应用程序,如果客户端获得安全资源,您应该始终执行身份验证。资源是否安全,这取决于您的应用程序。我更喜欢在这两种情况下使用 oauth2。如果资源不安全,我使用客户端凭据 (https://www.rfc-editor.org/rfc/rfc6749#section-1.3.4),如果资源安全,我使用访问令牌 (https://www.rfc-editor.org/rfc/rfc6749#section-1.4)。它使您可以保持相同的技术,并在将来需要时轻松更改。根据我的个人经验,我创建了模块 oauthifizer (https://github.com/vedi/oauthifizer)。它实际上是对 passport.js 的包装,这使得它在特定情况下更加友好。

    你可以看看这篇文章:http://aleksandrov.ws/2013/09/12/restful-api-with-nodejs-plus-mongodb/。同样,您可以考虑尝试 restifizer (https://github.com/vedi/restifizer) - 另一个模块,它允许您更快地创建 RESTful 服务。还有一个简短的例子:https://github.com/vedi/restifizer-example

希望它会有所帮助。

【讨论】:

以上是关于我的 Web Apps API 是不是需要 Oauth2的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core集成Office Web Apps

我是否需要更改我的Apps脚本代码,因为Google+登录功能已被弃用?

如何使用 Bottle 和新浪微博 API 进行 Web 登录

Github Actions Artifact 在 Azure Web Apps 中部署需要花费很多时间

在 Google Apps 脚本中使用 CloudKit Web 服务 API 查询 CloudKit 公共数据库时的 AUTHENTICATION_FAILED

当我的角度应用程序中已经存在身份验证时,是不是需要在 Web API 中进行身份验证