C# 客户端桌面上运行的应用程序的REST API身份验证 我需要把来自VB.NET、java、C++、Node.js和其他现代语言的应用程序的数据推送到服务器上。这些应用程序在零售商店中运行,我们的服务是三方服务。我计划提供RESTAPI来推送数据,但我关心的是如何对单个存储进行身份验证

C# 客户端桌面上运行的应用程序的REST API身份验证 我需要把来自VB.NET、java、C++、Node.js和其他现代语言的应用程序的数据推送到服务器上。这些应用程序在零售商店中运行,我们的服务是三方服务。我计划提供RESTAPI来推送数据,但我关心的是如何对单个存储进行身份验证,c#,vb.net,rest,authentication,C#,Vb.net,Rest,Authentication,我认为其中一种方法是使用AWS方法:这里概述的AccessKey和Secret Key方法: 每个商店都可以有多台计费机器/计算机-->因此,什么是更好的身份验证方法,因为AWS方式需要将密钥从我们的接口粘贴到它们的本地机器设置(此时,我假设我们的服务将直接从前端应用程序而不是后端服务器调用) 我不知道如何着手解决这个问题—REST API调用是否应该从前端或后端服务进行,如果是前端服务,我如何对商店进行身份验证。首先回答 我对如何着手解决这个问题感到困惑——如果剩下的问题 应从前端或后端服务

我认为其中一种方法是使用AWS方法:这里概述的AccessKey和Secret Key方法:

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

我不知道如何着手解决这个问题—REST API调用是否应该从前端或后端服务进行,如果是前端服务,我如何对商店进行身份验证。

首先回答

我对如何着手解决这个问题感到困惑——如果剩下的问题 应从前端或后端服务进行API调用,如果 它的前端我如何去验证商店

既然你说

我需要从VB.NET、java、C++、C++中的应用程序中推导出数据, Node.js和其他现代语言连接到我们的服务器

对我来说,听起来您需要服务器(您的客户)->服务器(您的RESTAPI)通信

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

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

接下来是时间/资源。像或这样的SaaS服务会让生活更轻松,但是,这是每月的费用。你可以在API中加入一个开源库,你只需要花时间开发、测试和维护(以及处理用户注册、pws丢失等问题)

所以现在,像Amazon一样的authentication.ID/Token auth是最常见的方式。客户发出的每个REST请求都将包括他们的ID和令牌(例如
ID=customer-123,Token=laksdjflaksjdf
)。要处理一个拥有多台机器的客户,您可以发行n个令牌,每台机器一个。客户将负责在每台机器上放置凭据。同样,这是最常见的操作方式

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


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

看看OAuth2、OpenID Connect、IdentityServer之类的东西。如果你想让你的生活更轻松一点,不要自己托管身份验证/身份验证,有一些云解决方案可用。谢谢@WimOmbelets。我读到了OAuth2和不同的授权-在用户名和密码可以以交互方式获取-它也支持刷新令牌。我首先使用开源库创建一个原型。在我的情况下,授权服务器和资源服务器将由同一家公司托管。密码授予还将帮助避免URI重定向与其他授予类型的问题。我发现node-oauth2-server for Node.js。对于Node.js作为后端,您还有其他建议吗?不,对不起,我对Node了解不够,无法给您提供任何合理的建议。我同意Amazon方式会更好。我可以使用简单版本的AccessKeyId和SecretKey,客户可以在每次登录系统时记住并输入。在这种情况下,客户如何mers(店主)重置AccessKeyId和SecretKey-我的意思是,很多时候,机器只允许访问计费应用程序-我肯定会提供一个门户来重置凭据-因此这些工作人员将进入一个公共机器,在那里他们访问门户-重置凭据,然后使用这些凭据?你见过AWS之类的授权部署吗我第一次创建API。看起来AWS API Gateway支持这种机制,它可以允许生成AccessKey、SecretKey(用户名、passwd),然后对API调用进行身份验证,并帮助扩展选项。