为 Web API 创建自定义连接器

本教程向您展示如何开始生成 ASP.NET Web API,将其托管在 Azure 应用服务的 Azure Web 应用上,启用 Microsoft Entra ID 身份验证,然后在 Power Automate 中注册 ASP.NET Web API。 注册 API 后,即可连接到该 API 并从流进行调用。 也可以在 Power Apps 或 Azure 逻辑应用中注册并调用该 API。

先决条件

创建 ASP.NET Web 应用并将其部署到 Azure

对于本教程,将创建 Visual C# ASP.NET Web 应用。

  1. 打开 Visual Studio,然后选择文件 > 新建项目

    1. 展开已安装,转到模板 > Visual C# > Web,然后选择 ASP.NET Web 应用程序

    2. 为应用输入项目名称、位置和解决方案名称,然后选择确定

    显示新 Visual C# ASP.NET Web 应用程序的屏幕截图。

  2. 新建 ASP.NET Web 应用程序框中,选择 Web API 模板,确保选中在云中托管复选框,然后选择更改身份验证

    显示“新建 ASP.NET Web 应用程序”对话的屏幕截图。

  3. 选择无身份验证,然后选择确定。 您可以在以后设置身份验证。

    选择“无身份验证”。

  4. 当出现新建 ASP.NET Web 应用程序框时,选择确定

  5. 创建应用服务框中,查看下表中所述的托管设置,进行所需更改,然后选择创建

    应用服务计划表示在您的 Azure 订阅中托管应用所使用的物理资源的集合。 了解应用服务

    创建应用服务。

    设置 建议值 说明
    您的 Azure 工作或学校帐户,或者您的个人 Microsoft 帐户 your-user-account 选择您的用户帐户。
    Web 应用名称 custom-web-api-app-name 或默认名称 输入您的 Web API 应用的名称,此名称用于您的应用的 URL,例如:http://web-api-app-name
    预订 Azure-subscription-name 选择要使用的 Azure 订阅。
    资源组 Azure-resource-group-name 选择现有 Azure 资源组—如果还没有,创建一个资源组。

    注意:Azure 资源组可在 Azure 订阅中组织 Azure 资源。

    应用服务计划 App-Service-plan-name 选择现有的应用服务计划—如果还没有,创建一个计划。

    如果创建应用服务计划,请指定以下设置。

    设置 建议值 说明
    Location deployment-region 选择部署应用的区域。
    大小 App-Service-plan-size 选择计划大小,此值确定服务计划的成本和计算资源产能。

    若要设置您的应用所需的任何其他资源,选择探索其他 Azure 服务

    设置 建议值 描述
    资源类型 Azure-resource-type 选择并设置您的应用所需的任何其他资源。
  6. 在 Visual Studio 部署您的项目后,为您的应用生成代码。

创建描述 Web API 的 OpenAPI (Swagger) 文件

要将 Web API 应用连接到 Power Automate、Power Apps 或逻辑应用,需要一个用于描述 API 操作的 OpenAPI(原 Swagger)文件。 您可以使用 Swagger 在线编辑器为您的 API 编写自己的 OpenAPI 定义,本教程使用名为 Swashbuckle 的开放源代码工具。

  1. 如果您还没有,请在 Visual Studio 项目中安装 Swashbuckle Nuget 包:

    1. 在 Visual Studio 中,选择工具 > NuGet 包管理器 > 包管理器控制台

    2. 包管理器控制台中,如果您还未进入您的应用的项目目录,请转到那里(运行 Set-Location "project-path"),然后运行此 PowerShell cmdlet:

      Install-Package Swashbuckle

      显示使用包管理器控制台安装的 Swashbuckle 的屏幕截图。

    提示

    如果您在安装 Swashbuckle 后运行您的应用,Swashbuckle 会通过此 URL 生成一个 OpenAPI 文件:

      http://{your-web-api-app-root-URL}/swagger/docs/v1

    Swashbuckle 还会在以下 URL 中生成一个用户界面:

      http://{your-web-api-app-root-URL}/swagger

  2. 当您准备好时,将 Web API 应用发布到 Azure。 若要从 Visual Studio 发布,请在解决方案资源管理器中右键单击您的 Web 项目,选择发布,然后按照提示操作。

    重要

    如果 OpenAPI 文档包含重复的操作 ID,文档将无效。 示例 C# 模板重复操作 ID Values_Get

    如果您使用示例 C# 模板,可以通过将一个操作 ID 实例更改为 Value_Get 并重新发布来解决此问题。

  3. 浏览到此位置获取 OpenAPI 文档:

    http://{your-web-api-app-root-URL}/swagger/docs/v1

    也可以从本教程下载示例 OpenAPI 文档。 在使用文档之前,请务必删除以 // 开头的注释。

  4. 将内容另存为 JSON 文件。 根据您的浏览器,您可能必须将文本复制并粘贴到空的文本文件中。

设置 Microsoft Entra ID 身份验证

现在,您将在 Azure 中创建两个 Microsoft Entra ID 应用程序。 若要了解详细信息,请转到将应用程序与 Microsoft Entra ID 集成

重要

两个应用必须位于同一目录中。

第一个 Microsoft Entra ID 应用程序:保护 Web API 的安全

第一个 Microsoft Entra ID 应用程序用于保护 Web API 的安全。 将其命名为 webAPI。 您可以按照这些步骤使用以下值在 Web API 上启用 Microsoft Entra ID 身份验证:

  • 登录 URL:https://login.windows.net
  • 回复 URL:https://<your-root-url>/.auth/login/aad/callback
  • 您不需要客户端密钥。
  • 不需要委托任何权限。
  • 复制应用程序 ID,您以后会需要它。

第二个 Microsoft Entra ID 应用程序:保护自定义连接器和委派访问权限的安全

第二个 Microsoft Entra ID 应用程序用于保护自定义连接器注册的安全,并获取对第一个应用程序所保护的 Web API 的委派访问权限。 将此应用程序命名为 webAPI-customAPI

  • 登录 URL:https://login.windows.net
  • 回复 URL:https://msmanaged-na.consent.azure-apim.net/redirect
  • 添加对 Web API 进行委托访问所需的权限。
  • 复制应用程序 ID,您以后会需要它。
  • 生成客户端密钥并复制,您以后会需要它。

向 Azure Web 应用添加身份验证

  1. 登录到 Azure 门户,然后找到在第一部分部署的 Web 应用。

  2. 选择设置,然后选择身份验证/授权

  3. 打开应用服务身份验证,然后选择 Azure Active Directory。 在下一边栏选项卡中,选择快速

  4. 选择选择现有的 AD 应用,然后选择此前创建的 webAPI Microsoft Entra ID 应用程序。

现在,您应该能够使用 Microsoft Entra ID 对 Web 应用进行身份验证。

将自定义连接器添加到 Power Automate

  1. 修改 OpenAPI,以添加用于 Web 应用的 securityDefintions 对象和 Microsoft Entra ID 身份验证。 OpenAPI 的此部分以及 host 属性应如下所示:
// File header should be above here...

"host": "<your-root-url>",
"schemes": [
    "https"      //Make sure this is https!
],
"securityDefinitions": {
    "Microsoft Entra ID": {
        "type": "oauth2",
        "flow": "accessCode",
        "authorizationUrl": "https://login.windows.net/common/oauth2/authorize",
        "tokenUrl" : "https://login.windows.net/common/oauth2/token",
        "scopes": {}
    }
},

// The rest of the OpenAPI follows...
  1. 转到 Power Automate,然后添加自定义连接器,如在 Power Automate 中使用自定义连接器中所述。

  2. 上传 OpenAPI 后,向导会自动检测到您在对 Web API 使用 Microsoft Entra ID 身份验证。

  3. 配置自定义连接器的 Microsoft Entra ID 身份验证。

  • 客户端 IDwebAPI-CustomAPI 的客户端 ID
  • 机密webAPI-CustomAPI 的客户端密钥
  • 登录 URLhttps://login.windows.net
  • ResourceUriwebAPI 的客户端 ID
  1. 选择创建创建与自定义连接器的连接。

另请参见

了解有关 Microsoft Entra ID 身份验证的详细信息

提供反馈

我们非常感谢大家提出有关连接器平台问题或新功能想法的反馈。 要提供反馈,请转到提交问题或获取连接器帮助,然后选择反馈类型。