对客户端桌面上运行的应用程序的REST API进行身份验证

时间:2017-05-12 13:37:55

标签: c# vb.net rest authentication

我需要将来自VB.net,Java,C#,C ++,Node.js和其他现代语言的应用程序的数据推送到我们的服务器。这些应用程序在零售商店运行,我们的服务是三方服务。我打算提供REST API来推送数据,但我关心的是如何验证单个商店。

我认为使用AWS方式的方法之一:此处概述的AccessKey和Secret Key方法: http://docs.aws.amazon.com/AmazonS3/latest/dev/S3_Authentication2.html

每家商店可以有多台计费机/计算机 - >那么什么是更好的身份验证方法,因为AWS方式需要将密钥从我们的接口粘贴到他们的本地机器设置(此时我假设我们的服务将直接从前端应用程序而不是后端服务器调用

我很困惑如何解决这个问题 - 如果REST API调用应该来自前端或后端服务,如果它的前端是如何进行身份验证的话。

1 个答案:

答案 0 :(得分:1)

首先回答

  

我很困惑如何处理这个问题 - 如果是REST   API调用应该来自前端或后端服务,如果   它的前端如何进行商店认证。

既然你说

  

我需要从VB.net,Java,C#,C ++中创建的应用程序中推送数据,   Node.js和其他现代语言到我们的服务器。

对我来说,这听起来像是你想要服务器(你的客户) - >服务器(您的REST API)通信。

在进入安全选项之前,您需要考虑安全性和时间/资源。

从安全性开始,如果您正在处理HIPAA,PII或其他敏感数据,那么肯定会做更多研究。

接下来,时间/资源。像AuthRocketOkta这样的SaaS服务会让生活变得更轻松,但这是每月的费用。你可以将一个开源库推入你的API,你只需要花时间来开发,测试和维护(并处理用户注册,丢失的pws等内容)。

现在,身份验证。 ID / Token auth就像亚马逊一样是最常见的方式。客户发出的每个REST请求都将包含其ID和令牌(例如ID=customer-123, Token=laksdjflaksjdf)。要处理具有多台机器的客户,您可以发出n个令牌,每台机器一个。客户将负责将凭证放在每台机器上。同样,这是最常见的做事方式。

您也可以使用OAuth,但这对您的用例没有多大意义,因为它的公司而不是个人(通常OAuth用于面向开发人员的API)。

还有其他各种基于令牌的身份验证方法,但这些方法通常更适合客户端> API请求(网站 - > API)。