0

我需要关于如何最好地处理以下场景以及实施它的最佳实践的建议。

我们公司希望彻底改造其旧的 IT 系统,并创建新的网站应用程序和可能的移动应用程序,供其员工和承包商与之互动。

所以我正在考虑创建一个 api,可以从中创建网站应用程序和移动应用程序......

https://api.company.com/v1

我需要的建议与 api 的安全/授权有关。我目前对如何实现这一点的想法是,员工/承包商将通过公司的网站应用程序/移动应用程序与 api 交互,然后与 api 通信并设置适当的访问权限

WebsiteApp.company.com ->>> api.company.com/v1 移动应用程序
->>> api.company.com/v1

首先的想法是在 api 端为每个用户设置一个用户名和密码,让网站应用程序和移动应用程序都使用它。然而,问题是承包商和可能的一些员工不能完全信任,并且可以在未经公司许可的情况下将用户名和密码传递给第三方。所以我的问题实际上是我应该考虑哪些其他安全/授权/身份验证策略来克服这种情况。在一个完美的世界中,每个用户都必须授权他/她想要从...访问 api 的每个设备/移动应用程序/网站应用程序。

OAuth 2.0 能做到这一点吗?但不确定它是否能适应特定的用户/设备/网站场景?

考虑使用的技术是:-

API

Node.js with (Express js? or Restify?) , MongoDb

消费者应用

网站应用(Angular Js、Backbone 等)
移动应用(PhoneGap、Jquery Mobile 等)

非常感谢

乔纳森

4

2 回答 2

1

似乎您主要担心的是您不能信任您正在访问的人,如果是这种情况,您可能不应该首先尝试授予他们访问权限。如果这些应用程序将用于您担心其他人看到承包商/员工是否泄露他们的密码的任何机密信息或知识产权,那么您必须考虑承包商/员工只是拿走信息并将其泄露。

在这种情况下,您的用户名/密码应该足以进行身份​​验证,但是您还应该考虑对谁可以访问什么的权限非常严格。如果您担心信息泄露,则应在需要知道的基础上显示所有内容。如果承包商不需要特定信息,请确保不会将其提供给他的帐户。

您还可以考虑跟踪访问帐户的位置 (IP)。也许当从新位置访问帐户时,员工/承包商会完成一些任务来验证该帐户;这可以是任何东西,从输入验证码(类似于双因素身份验证)到拨打帮助热线并获得授权的位置。

于 2013-02-07T18:01:53.370 回答
0

这可能有点晚了,但是因为我正在经历相同的过程(使用 oAuth 和资源所有者密码凭证授予时的正确流程是什么</a>)

我们还没有弄清楚核心实现你想要做什么听起来类似于我们试图为我们的服务做的事情。

据我了解,这取决于应用程序以及它们是否受信任以及您打算如何处理 API 向前发展。如果应用程序受信任,您可能会使用基于 SSL 的 HTTP-Basic,这是一个可行的解决方案。

对我们来说,我们将通过 API 创建一套受信任的官方应用程序(Web、Mobile 等),然后将其打开,因此我们决定经历 oAuth2 的痛苦,对于我们的应用程序,我们将在其中使用Resource Owners Passwords Credentials 授予类型,您可以在其中将用户用户名和密码交换为令牌,客户端将使用该令牌与您的 API 进行交互,并具有隐式定义的信任。

当我们为 3rd 方消费开放 API 时,这个模型将不起作用,我们将经历所有主要网站所做的过程,并获得用户对 3rd 方应用程序可以对其数据做什么的明确许可。

于 2013-04-04T14:32:22.180 回答