【问题标题】:Azure api management and Web AppAzure api 管理和 Web 应用
【发布时间】:2017-07-30 13:21:18
【问题描述】:

我在 API 管理上托管了我的 REST 服务,并在 Azure Web 应用服务中使用这些服务,该服务仅包含 HTML 页面、javascript 文件和 CSS 文件。

我想知道如何限制仅从没有设置 Azure AD 和 OAuth 设置的 Web 应用程序访问 API 管理的 REST 端点。

【问题讨论】:

  • 好吧,实现某种身份验证,比如证书身份验证?
  • 您能详细说明一下吗?
  • 我现在有点困惑,所以你有 Api 和 WebApp?这是两个不同的东西?
  • 是的,我在 API 管理上有 REST API 端点,这些端点应该只能从我使用 Web 应用服务托管在 Azure 上的 Web 应用程序访问。
  • 您的网站应该可以通过网络访问吗?

标签: rest azure web azure-web-app-service azure-api-management


【解决方案1】:

客户端应用程序源设计为以明文形式提供给任何使用它的人。任何用户都可以在浏览器中打开开发人员工具并查看您为使应用程序工作而编写的代码。因此,即使您使用一些秘密保护您的 REST API 并在应用程序代码中使用它来与该 REST API 对话,世界上任何人都将能够获取该应用程序的秘密并直接调用您的 REST API,而您将没有区分他们的呼叫与您的应用发出的呼叫的方法。

OAuth 和 AAD 会在一定程度上起作用,但即使它们允许您验证用户,而不是应用程序。同一用户可以轻松地跟踪您的应用对 REST API 的调用,并在任何其他应用中重现它们,而您将不得不再次弄清楚这一点。

我认为最好的办法是限制某个用户以任何你想要的方式(即使通过 IP 地址)识别它的调用。

【讨论】:

  • 感谢您的快速回复。在这种情况下,我不能使用 IP 地址访问限制。有没有其他办法呢
  • 不,我不认为有任何方法可以做到这一点,不仅仅是在 APIM 产品中,而是根本没有。如果您希望您的应用程序(纯粹是客户端)与 APIM 对话 - 很好,如果您想确保它只有那个可以与 APIM 对话的应用程序 - 我看不到实现这一目标的方法。因为您的应用程序纯粹是客户端,所以它的所有代码以及它可能拥有的任何秘密都将被最终用户看到,因此所有这些秘密本质上都会受到损害。您要么通过 OAuth 或 AAD 对用户进行身份验证,要么为您的 Web 应用程序实现服务器端。
【解决方案2】:

您可以使用证书身份验证从 Web 应用程序到 api 管理。您可以在 api 管理策略中验证您的 Web 应用程序上的 ssl 证书指纹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多