使用 Azure 自动执行模板应用安装

自动化模板应用安装,以简化客户的 Power BI 部署过程。 模板应用提供连接到客户数据的预生成报表,但对于不熟悉连接详细信息的用户来说,手动配置可能很困难。

本教程演示了数据服务提供程序如何使用 Azure Functions 自动执行模板应用参数配置。 当客户单击预配置链接时,自动化会收集必要的信息,设置参数,并重定向它们以安装应用,这只需要身份验证才能完成设置。

当客户登录到门户时,他们选择已准备好的特殊链接。 此链接:

  • 启动自动化,用于收集所需的信息。
  • 预配置模板应用参数。
  • 将客户重定向到其 Power BI 帐户,可在其中安装应用。

他们只需选择安装并针对他们的数据源进行身份验证,就可以开始使用了!

此处演示了客户体验。

自动安装应用程序的用户体验的屏幕截图。

在本教程中,你将使用我们创建的自动安装 Azure Functions 示例来预配置和安装模板应用。 出于演示目的,此示例故意保持简单。 它封装了 Azure 函数的设置,以使用 Power BI API 安装模板应用并自动为用户配置它。

有关应用使用的常规自动化流和 API 的详细信息,请参阅 自动配置模板应用安装

我们的简单应用程序使用 Azure 函数。 有关 Azure Functions 的详细信息,请参阅 Azure Functions 文档

基本流

以下基本流程列出了应用程序在客户通过您的门户选择链接来启动时执行的操作。

  1. 用户登录到 ISV 的门户并选择提供的链接。 此操作启动流程。 ISV 的门户在此阶段准备用户特定的配置。
  2. ISV 基于在 ISV 租户中注册的服务主体(仅限应用的令牌)获取仅限应用的令牌。
  3. 使用 Power BI REST API,ISV 将创建 安装票证,其中包含 ISV 准备的用户特定参数配置。
  4. ISV 使用 POST 包含安装票证的重定向方法将用户重定向到 Power BI。
  5. 用户使用安装票证重定向到其 Power BI 帐户,并提示用户安装模板应用。 当用户选择 “安装”时,会为其安装模板应用。

注释

虽然在创建安装票证的过程中由 ISV 配置参数值,但数据源相关的凭据仅由用户在安装的最后阶段提供。 这种安排可防止它们向第三方公开,并确保用户与模板应用数据源之间建立安全连接。

先决条件

设置自动化开发环境

在继续设置应用程序之前,请按照快速入门中的说明作 :使用 Azure 应用配置创建 Azure Functions 应用 以开发 Azure 函数以及 Azure 应用配置。 按照文章中所述创建应用配置。

在 Microsoft Entra ID 中注册应用程序

请按照服务主体和应用程序密钥嵌入 Power BI 内容中的描述创建服务主体。

请确保将应用程序注册为 服务器端 Web 应用程序。 注册服务器端 Web 应用程序以创建应用程序机密。

保存 应用程序 ID (ClientID)和 应用程序机密 (ClientSecret),以便执行后续步骤。

将服务主体作为管理员添加到模板应用工作区,以便能够测试自动化工作流。

模板应用准备

创建模板应用并准备好安装后,请保存以下信息以获取后续步骤:

  • 应用 ID包密钥所有者 ID ,因为它们在创建应用时显示在 模板应用进程属性 的末尾的安装 URL 中。

    还可以通过在模板应用的“发布管理”窗格中选择“获取”链接来获取相同的链接。

  • 在模板应用程序的语义模型中定义的参数名称。 参数名称是区分大小写的字符串。 定义模板应用的属性或 Power BI 中的语义模型设置时,还可以从“参数设置”选项卡检索它们。

注释

如果模板应用已准备好安装,则可以在模板应用中测试预配置的安装应用程序,即使它尚未在 AppSource 上公开发布。 若要使租户外部的用户能够使用自动安装应用程序来安装模板应用,模板应用必须在 AppSource 中公开发布。 在使用创建的自动安装应用程序分发模板应用之前,请务必 将其发布到合作伙伴中心

安装和配置模板应用

在本部分中,你将使用我们创建的自动安装 Azure Functions 示例来预配置和安装模板应用。 出于演示目的,此示例故意保持简单。 它允许你使用 Azure 函数Azure 应用配置 轻松部署和使用模板应用的自动安装 API。

下载 Visual Studio

下载 Visual Studio (版本 2017 或更高版本)。 请确保下载最新的 NuGet 包

下载自动安装 Azure Functions 示例

从 GitHub 下载 自动安装 Azure Functions 示例 以开始使用。

自动安装 Azure Functions 示例的屏幕截图。

设置 Azure 应用配置

若要运行此示例,需要使用此处所述的值和密钥设置 Azure 应用配置。 密钥是 应用程序 ID应用程序机密和模板应用的 appIdpackageKeyownerId 值。 有关如何获取这些值的信息,请参阅以下部分。

密钥也在 Constants.cs 文件中定义。

配置密钥 Meaning
TemplateAppInstall:Application:AppId 安装 URL 中的 appId
TemplateAppInstall:Application:PackageKey 安装 URL 中的 packageKey
TemplateAppInstall:Application:OwnerId 安装 URL 中的 ownerId
TemplateAppInstall:ServicePrincipal:ClientId 服务主体 应用程序 ID
TemplateAppInstall:ServicePrincipal:ClientSecret 服务主体 应用程序的密钥

此处显示了 Constants.cs 文件。

Constant.cs文件的屏幕截图。

获取模板应用属性

填写在创建应用时定义的所有相关模板应用属性。 这些属性是模板应用的 appIdpackageKeyownerId 值。

若要获取上述值,请执行以下步骤:

  1. 登录到 Power BI

  2. 转到应用程序的原始工作区。

  3. 打开 “发布管理 ”窗格。

    “发布管理”窗格的屏幕截图。

  4. 选择应用版本并获取其安装链接。

    “发布管理”按钮的屏幕截图。

  5. 将链接复制到剪贴板。

    “获取链接”按钮的屏幕截图。

  6. 此安装 URL 包含需要其值的三个 URL 参数。 对应用程序使用 appIdpackageKeyownerId 值。 示例 URL 将类似于此处所示的内容。

    https://app.powerbi.com/Redirect?action=InstallApp&appId=66667...9cccc0000&packageKey=b2df4b...dLpHIUnum2pr6k&ownerId=aaaa...22222&buildVersion=5
    

获取应用程序 ID

使用 Azure 中的应用程序 ID 填写 applicationId 信息。 应用程序使用 applicationId 值向请求权限的用户标识自身。

若要获取应用程序 ID,请执行以下步骤:

  1. 登录到 Azure 门户

  2. 在门户菜单中,选择 “所有服务”。

  3. 在“所有服务”页上的 “标识 ”部分中,选择 >“应用注册”。

  4. 选择需要 应用程序 ID 的应用程序

    选择需要应用程序 ID 的应用的屏幕截图。

  5. 有一个应用程序 ID 作为 GUID 列出。 将此应用程序 ID 用作应用程序的 applicationId 值。

    applicationId 值的屏幕截图。

获取应用程序机密

在 Azure 中的“应用注册”部分的“密钥”部分填写 ApplicationSecret 信息。 使用 服务主体时,此属性有效。

若要获取应用程序机密,请执行以下步骤:

  1. 登录到 Azure 门户

  2. 在门户菜单中,选择 “所有服务”。

  3. 在“所有服务”页上的 “标识 ”部分中,选择 >“应用注册”。

    选择应用的屏幕截图。

  4. 在“管理”下选择“证书和机密”。

  5. 选择 新客户端密码

  6. “说明 ”框中输入名称,然后选择持续时间。 然后选择 “添加” 以获取应用程序的值,你将在客户端机密的 “值 ”标题下看到该值。

在本地测试函数

按照 本地运行函数 中所描述的步骤来运行您的函数。

配置您的门户以向函数的 URL 发出 POST 请求。 示例为 POST http://localhost:7071/api/install。 请求正文应是描述键值对的 JSON 对象。 键是在 Power BI Desktop 中定义的 参数名称 。 值是为模板应用中每个参数设置的所需值。

注释

在生产环境中,门户的预期逻辑为每个用户推导参数值。

所需的流应为:

  1. 门户根据用户或会话准备请求。
  2. 发出对 Azure 函数的 POST /api/install 请求。 请求正文由键值对组成。 密钥是参数名称。 该值是所需设置的值。
  3. 如果已正确配置所有内容,浏览器应自动重定向到客户的 Power BI 帐户并显示自动安装流。
  4. 安装后,参数值按步骤 1 和步骤 2 中的配置进行设置。

将项目发布到 Azure

若要将项目发布到 Azure,请按照 Azure Functions 文档中的说明进行作。 然后,可以将模板应用自动安装 API 集成到产品中,并开始在生产环境中对其进行测试。