API安全/授权
我需要关于如何最好地解决以下情况的建议,以及实施该方案的最佳实践 我们公司希望彻底改造其旧的IT系统,并创建新的网站应用程序,以及可能的移动应用程序,以便其员工和承包商与之交互 所以我在考虑创建一个api,网站应用程序和移动应用程序都可以从中创建 我需要的建议与api的安全/授权有关。我目前对如何实现这一点的想法是,员工/承包商将通过公司的网站应用程序/移动应用程序与api交互,然后这些应用程序将与api通信并设置适当的访问权限 WebsiteApp.company.com->>api.company.com/v1API安全/授权,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
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,但是我个人没有这样做,而且我的信息可能已经过时。苹果的开发者文档可能是获取这方面信息的好地方。