将多个产品添加到 Azure API 管理服务上的订阅

Add multiple products to subscription on Azure API Management Service

在我们开发 SaaS API 时,我们正在使用 Azure API 管理服务来管理 API。

我们定义了 API 产品,如下所述:

我想用 Azure API 管理服务实现的是-

这可能吗?

提前致谢。

PS:请参阅下图了解我想要实现的目标。

不,据我所知,你所寻求的是不可能的。

Azure API 管理层目前提供以下订阅范围

1) 所有 APIs:此范围提供对 APIM 托管的所有 APIs 的访问 2) 单个 API:此范围提供对单个 API 托管 APIM 的访问 3) 产品:当 API 在产品中分组时,此范围允许提供对组的访问。该范围仅支持每个订阅一个产品

因此理论上,当您想要向不同的用户授予对不同 API 的访问权限时,您将必须为用户创建单独的产品并分配对产品的订阅。

API 管理支持访问组。产品可以在访问控制下设置访问组。这将使只有属于该组成员的用户才能在 ApiManagement 中看到它。这样做,您可以只为所有 API 创建一个订阅,并使用访问策略进行过滤,以验证您只能使用允许的 API,因为访问组。

我在 API 上使用了以下策略来确保用户具有访问权限以及 AllApis 订阅:

 <choose>
        <when condition="@(context?.User?.Groups == null || !(context.User.Groups.Any(q => q.Id == context?.Api?.Id)))">
            <return-response>
                <set-status code="401" reason="Unauthorized" />
                <set-header name="WWW-Authenticate" exists-action="override">
                    <value>Unauthorized. Subscription key not valid for this API."</value>
                </set-header>
            </return-response>
        </when>
    </choose>

总而言之,这最终实现了对 API 的自定义访问,仅使用一个订阅密钥。您可以选择用户和 API 访问的任意排列。