Api 管理用例

Api Managment use case

我对 Azure API 管理服务以及如何在安全方面使用它有疑问。我已经看过但找不到我可以放心的答案。

那么,我应该使用 oauth2 的订阅密钥还是访问令牌。

我认为单独拥有订阅密钥还不够好,因为它更多的是一种身份验证方法,而 oauth 令牌可以做到这两点。 此外,我没有看到同时使用订阅密钥和身份验证令牌的用例,因此我不确定理想的用例是什么。

  1. 最佳用例是通过 VPN 连接保护后端 API。这将在 APIM 与您的后端系统(ERP 或任何其他系统)之间提供安全隧道 https://docs.microsoft.com/en-us/azure/api-management/api-management-using-with-vnet

  2. 下面一个也是安全的好案例, https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad

APIM 本身并没有规定任何特定的最佳使用方式,而是提供了适合不同场景的不同选项。如果您询问如何 authenticate/authorize 调用 APIM,有以下几种方法:

  1. 订阅密钥。一种验证调用方并授权其调用特定 product/API 范围的好方法。每个订阅可以选择两个密钥,这样您就可以轻松地随时间轮换它们。这主要适用于需要单独使用 APIM 授权最终用户或将密钥嵌入到最终用户使用的应用程序中的场景。
  2. OAuth。 APIM 本身无法颁发 OAuth 令牌,因此当我们有一个可用的 third-party OAuth 服务器时,这最适合您拥有或不拥有。通常,APIM 对请求中的 OAuth 令牌是透明的,甚至不能使用它来验证对其内部用户数据库的调用,但您可以选择使用 validate-jwt 策略来要求此类令牌,​​查找某些声明、问题, 检查签名 e.t.c.
  3. 客户端证书。如果您控制您的客户端,那么您可以选择配置客户端证书并在 APIM 级别配置策略以要求证书存在、检查其属性或验证其链,包括配置您自己的 CA 和根证书的能力。
  4. IP 过滤。不是那么高的安全措施,但仍然是一种选择。您可以将 APIM 配置为拒绝在指定 IP 范围之外进行的调用。