使用Azure API管理和Function App作为后端来管理授权

时间:2018-09-24 14:50:32

标签: azure azure-api-management

目前,我一直在一个项目中实施一些在Azure上托管的API,并通过Azure API管理服务将其公开。目前,APIM服务与Function App(API)通信,并且Function App的授权级别为Function。因此,只要有对APIM服务的请求,该请求就会转发到Function App,并将代码注入到请求中以得到授权。但是,目前,我们正在管理XML文件的策略,因此,授权代码已硬编码在这些文件上。因此,我想知道您是否对动态管理这些代码而不将其硬编码到这些文件有任何建议,因为这些文件保存在Azure DevOps存储库中。目前,我们在Azure DevOps用于管理策略更改,因此,只要有更改,它就会将新策略文件上载到存储帐户,然后我们部署一个ARM模板,以使用新策略配置所有APIM服务。

有什么想法可以在不对代码进行硬编码的情况下进行管理吗?

谢谢。

2 个答案:

答案 0 :(得分:2)

请参见此处,了解如何在策略中使用命名值:https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-properties。它们是专门为从策略代码中提取一些常用参数和/或秘密而创建的。

此外,您现在可以检查Function App导入在APIM中的工作方式。导入后,您将:

  1. 功能应用程序的API
  2. 在功能应用程序中对选定功能的操作
  3. 后端实体-https://docs.microsoft.com/en-us/rest/api/apimanagement/apimanagementrest/azure-api-management-rest-api-backend-entity-指向您的函数应用,并使用函数的键引用命名的值
  4. 具有功能键并被标记为机密的命名值。

所有这些使您能够整理策略代码以调用Function应用程序至:

<set-backend-service id="my-function-app" />

答案 1 :(得分:1)

在对不同的选项进行了研究和分析之后,我最终使用了ARM模板中Functions资源中的listSecrets函数。因此,我将函数调用的结果(函数键)存储在一个变量中,然后使用该变量组成函数的URL,并将其与API Management API策略上的后端服务相关联。此link中与listSecrets函数有关的更多信息。

非常感谢您的帮助。