Azure API 管理 - 如何保护订阅密钥

Man*_*sar 7 security azure-api-management azure-web-app-service angular

技术栈

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

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

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

如何使其安全?

在此输入图像描述

Man*_*sar -3

正如 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 和直接从其他应用程序/工具(如 postman)调用的 API。

感谢你的帮助。