Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
API安全/授权_Api_Node.js_Oauth_Express_Oauth 2.0 - Fatal编程技术网

API安全/授权

API安全/授权,api,node.js,oauth,express,oauth-2.0,Api,Node.js,Oauth,Express,Oauth 2.0,我需要关于如何最好地解决以下情况的建议,以及实施该方案的最佳实践 我们公司希望彻底改造其旧的IT系统,并创建新的网站应用程序,以及可能的移动应用程序,以便其员工和承包商与之交互 所以我在考虑创建一个api,网站应用程序和移动应用程序都可以从中创建 我需要的建议与api的安全/授权有关。我目前对如何实现这一点的想法是,员工/承包商将通过公司的网站应用程序/移动应用程序与api交互,然后这些应用程序将与api通信并设置适当的访问权限 WebsiteApp.company.com->>api.com

我需要关于如何最好地解决以下情况的建议,以及实施该方案的最佳实践

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

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

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

WebsiteApp.company.com->>api.company.com/v1
mobileapp->>api.company.com/v1

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

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

考虑使用的技术包括:-

原料药

Node.js与(Express js?或Restify?),MongoDb

消费者应用程序

网站应用程序(Angular Js、主干网等)
移动应用程序(PhoneGap、Jquery Mobile等)

非常感谢


Jonathan

看来,你主要担心的是你不能信任你要接触的人,如果是这样的话,你可能一开始就不应该试图让他们接触。如果这些应用程序被用于任何机密信息或知识产权,你担心别人看到承包商/雇员是否泄露了他们的密码,那么你必须考虑承包商/雇员只是索取信息并将其送出。p> 在这种情况下,您的用户名/密码应该足以认证,但是您也应该考虑对谁可以访问什么非常严格的权限。如果你担心信息外泄,一切都应该在需要知道的基础上显示出来。如果承包商不需要特定的信息,请确保没有提供给他的帐户


您也可以考虑跟踪帐户正在访问的位置(IPS)。当从新位置访问帐户时,员工/承包商可能会完成一些任务来验证帐户;从输入验证代码(类似于双因素身份验证),到拨打帮助热线并授权位置,这一切都可能发生。

这可能有点晚了,但因为我正在经历相同的过程()

我们还没有找到您想要做的核心实现,这听起来与我们试图为我们的服务所做的类似

据我所知,这取决于应用程序,以及它们是否可信,以及你打算如何处理你的API。如果应用程序是可信的,那么您可能会使用HTTP Basic over SSL,这是一个可行的解决方案

对于我们来说,我们将通过API创建一套可信的官方应用程序(网络、移动等),然后将其打开,因此,我们决定经历oAuth2的痛苦,在oAuth2中,对于我们的应用程序,我们将使用将用户用户名和密码交换为令牌,客户端将使用令牌与您的API进行交互,并隐式定义信任


当我们为第三方消费打开API时,这种模式将不起作用,我们将经历所有主要网站所做的过程,并获得用户对第三方应用程序可以对其数据执行的操作的明确许可。

谢谢Nick,提出了很好的观点。IP地址很难锁定,尤其是移动设备、欺骗、代理服务器等。。嗯,MAC地址值得一想?这真的应该设置在防火墙级别吗?。所以我认为OAuth 2在这种情况下并没有真正的帮助?当谈到IP时,我更多地是为了web UI。对于移动设备,您可以查看UDID,但是我个人没有这样做,而且我的信息可能已经过时。苹果的开发者文档可能是获取这方面信息的好地方。