【问题标题】:Authentication approach for REST API used by frontend app and another backend service前端应用程序和另一个后端服务使用的 REST API 的身份验证方法
【发布时间】:2017-03-07 15:30:30
【问题描述】:

我有一个 rest api 后端服务 A 被其他两个服务使用:

  • B 服务是在浏览器中运行的网络应用程序(独立节点服务器)
  • C 服务也是后端服务(也是单独的服务器)

我最初的方法是使用基本身份验证进行 A-B 通信,但这对 A-C 没有意义,因为无法安全地将凭据保存在浏览器中。另一方面,在 A-B 通信中引入会话和令牌似乎很奇怪。

无论我做什么,都像是一场拔河比赛。

您认为这种设置可能是合理的解决方案吗?

【问题讨论】:

  • 我觉得你可以尝试使用 Oauth2 oauth.net/2 身份验证。简而言之:身份验证生成一个令牌。然后可以从客户端使用此令牌来验证用户/客户端,而无需传递用户名和密码。

标签: javascript java rest microservices


【解决方案1】:

A-B 至少需要 SSL,然后才能判断基本身份验证是否有效。

如果 C 将使用与 B 相同的 API,那么使用相同的身份验证方法是有意义的,只是为了简单起见,IMO。

您还可以使用基于令牌的身份验证机制,其中每个服务(远程或本地)进行身份验证并获取令牌并将其用于后续通信。

请参阅以下内容了解更多信息:

REST API Token based authentication

【讨论】:

    【解决方案2】:

    您可以参考 AWS API Gateway 以获取有关如何为 REST API 实施身份验证的线索。 https://aws.amazon.com/api-gateway/faqs/#security

    总结:

    1. 访问令牌
    2. 自定义身份验证
    3. 启用 CORS
    4. 基于客户端 SSL 证书的身份验证

    【讨论】:

      猜你喜欢
      • 2014-04-23
      • 2019-01-09
      • 2020-02-23
      • 2014-07-16
      • 2020-05-07
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多