3

技术栈

  • 部署在 WebApp 中的 API
  • 已部署 API 管理并将 WebApp 配置为 Web 服务 URL。
  • 在 Angular 应用程序中开发的 UI,它调用 API 管理端点以在 UI 上显示数据。
  • 实施 IP 身份验证以确保只有允许的用户才能访问 UI 和 API
  • 在产品级别启用订阅,并与客户端共享密钥以进行 API 调用
  • 为 UI 创建单独的产品,并在 UI 中使用订阅密钥来调用 API 和显示数据

现在在这种情况下,订阅密钥将通过浏览器 -> 检查 -> 网络选项卡可见

我们要确保用户不能使用 UI 密钥进行 API 调用使用代理将隐藏密钥,但现在任何人都可以调用代理 url 来获取数据。

如何使其安全?

在此处输入图像描述

4

3 回答 3

1

您找到任何解决方案了吗?我使用 nginx 作为代理服务器,并proxy_set_header subscription-key abc-def在调用微服务时将订阅密钥保留在那里。这样订阅密钥就不会暴露给 UI,而是通过 nginx 转发给 API 管理服务。

于 2020-12-03T18:29:45.310 回答
0

将密钥存储在 Azure Key Vault 中并从前端应用程序访问, https://medium.com/@ayanfecrown/azure-key-vault-node-js-step-by-step-tutorial-af131a78e220

于 2019-07-23T08:58:25.873 回答
-2

正如 nmbrphi、garethb 所提到的,我们无法控制最终用户在浏览器网络选项卡中看到的内容。

而且由于我们在系统中没有可用的用户身份验证,并且只有 IP 身份验证,因此无法直接从 API 控制 UI 密钥的使用。

为了确保我们有更安全的 UI 调用,我们实现了可用于任何 javascript 应用程序的自定义逻辑

参考 http://billpatrianakos.me/blog/2013/09/12/securing-api-keys-in-a-client-side-javascript-app/

这至少帮助我区分了 UI 调用 API 和直接从其他应用程序/工具(如邮递员)调用的 API。

感谢你的帮助。

于 2019-07-30T10:34:29.447 回答