【问题标题】:authentication for REST API for apps running on desktop on client side在客户端桌面上运行的应用程序的 REST API 身份验证
【发布时间】:2017-10-11 20:36:15
【问题描述】:

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

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

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

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

【问题讨论】:

  • 看看 OAuth2、OpenID Connect、IdentityServer 之类的东西。如果您想让您的生活更轻松一些并且避免自己托管身份验证/身份验证,可以使用云解决方案,例如 this
  • 谢谢@WimOmbelets。我阅读了有关 OAuth2 和不同授权的信息 - 使用密码授权是否是一个好主意,其中用户名和密码可以以交互方式获取 - 它也支持刷新令牌。我首先使用开源库创建原型。在我的情况下,授权服务器和资源服务器将由同一家公司托管。密码授权也将有助于避免 URI 重定向与其他授权类型的问题。我为 Node.js 找到了 node-oauth2-server。您对 Node.js 作为后端还有其他建议吗?
  • 不,抱歉,我对 node 了解不够,无法给您任何明智的建议。

标签: c# vb.net rest authentication


【解决方案1】:

先回答

我很困惑如何解决这个问题 - 如果 REST API 调用应该从前端或后端服务进行,如果 它的前端我如何去验证商店。

既然你说

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

在我看来,您需要服务器(您的客户)-> 服务器(您的 REST API)通信。

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

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

接下来,时间/资源。像 AuthRocketOkta 这样的 SaaS 服务将使生活更轻松,但是,这是每月的费用。您可以将开源库引入您的 API,您只需要花时间进行开发、测试和维护(并处理用户注册、丢失密码等问题)。

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

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

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

【讨论】:

  • 我同意亚马逊的方式会更好。我可以使用简单版本的 AccessKeyId 和 SecretKey,客户可以记住并在每次登录系统时输入。在这种情况下,客户(商店所有者)如何重置 AccessKeyId 和 SecretKey - 我的意思是很多时候机器只被允许访问计费应用程序 - 我肯定会提供一个门户来重置凭据 - 所以这些工作人员会去他们访问门户的通用机器 - 重置凭据然后使用这些?
  • 在这种情况下你见过类似 AWS 的授权部署吗?我是第一次创建 API。
  • 看起来 AWS API Gateway 支持这种类型的机制,它可以允许生成 AccessKey、SecretKey(用户名、密码),然后它也对 API 调用进行身份验证并帮助扩展选项。
猜你喜欢
  • 2013-01-20
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多