身份验证设置

本文介绍如何在 Microsoft Fabric 中使用身份验证。

要在 Fabric 中对自定义工作负载进行身份验证,请先设置三个组件部分:

注意

要配置本文中所述的身份验证设置,必须具有全局管理员角色。

Azure 存储预配

本文中使用的身份验证示例演示如何在湖屋体系结构中存储数据和读取数据。 这需要在代表 (OBO) 流中为 Azure 存储服务生成令牌。 要生成令牌,必须同意将 Azure 存储与应用程序一起使用。 要同意,必须首先在租户中预配 Azure 存储。

确保在租户中预配 Azure 存储:

  1. 登录到 Azure 门户

  2. 转到“Microsoft Entra ID”“企业应用程序”>

  3. 在筛选器中,选择“应用程序类型 = 所有应用程序”。 应用程序 ID 以 e406a681-f3d4-42a8-90b6-c2b029497af1 开头。

    显示在 Azure 门户预配 Azure 存储的屏幕截图。

如果 Azure 存储应用程序显示在搜索结果中,则已预配存储,可以继续下一步。 否则,全局管理员需要配置应用程序。

要预配 Azure 存储,请以管理员身份打开 Windows PowerShell 并运行以下脚本:

Install-Module az  
Import-Module az  
Connect-AzureAD  
New-AzureADServicePrincipal -AppId e406a681-f3d4-42a8-90b6-c2b029497af1

在 Microsoft Entra ID 中手动配置应用程序

要对工作负载进行身份验证,必须在 Microsoft Entra ID 中注册工作负载应用程序。 如果还没有注册应用程序,请创建新应用程序。 然后,完成以下步骤。

  1. 将以下配置应用于应用程序:

    1. 使应用程序成为多租户应用。
    2. 对于开发应用程序,请使用单页应用程序 (SPA) 平台将重定向 URI 配置为 http://localhost:60006/close。 需要此配置才能支持 Microsoft 同意。 可添加其他重定向 URI。

    注意

    • 重定向 URI 应该是一种在访问页面后只需关闭页面的 URI。 前端示例中已配置 URI http://localhost:60006/close。 可以前往 Frontend/src/index.ts 修改重定向 URI。 如果更改 URI,请确保它与为应用程序配置的 URI 匹配。
    • 创建应用程序后,可以配置重定向 URI。 要更改重定向 URI 设置,请转到“身份验证”“管理”>
    • 重定向 URL 必须返回仅调用 JavaScript windows.close() 的 HTML 页面。

    应用程序注册 UI 的屏幕截图。

  2. 更改你的应用程序的应用程序 ID URI。 转到“管理”“公开 API”,并编辑应用的应用程序 ID URI 值>

    对于开发人员模式场景,应用程序 ID URI 应以 api://localdevinstance/<Workload publisher's tenant ID in lowercase (the tenant ID of the user used in Fabric to run the sample)>/<Name of your workload> 开头,并在以 / 开头的末尾创建可选子路径(请参阅本节后面的示例)。

    应用程序 ID URI 参数:

    • 工作负载名称必须与清单中指定的名称完全相同。
    • ID URI 不以斜线 (/) 结尾。
    • ID URI 的末尾可以有一个由最多 36 个字符的字符串标识的可选子路径。 它只能包含英文小写字母、大写字母、数字和短划线。

    提示

    获取有关查找 Microsoft Entra 租户 ID 的帮助。

    例如,如果发布者的租户 ID 为 aaaabbbb-0000-cccc-1111-dddd2222eeee 且工作负载名称为 Fabric.WorkloadSample,则:

    • 以下 URI 有效:

      • api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample
      • api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample/abc
    • 以下 URL 无效:

      • api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample/af/
      • api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample/af/a
      • 不以 api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/Fabric.WorkloadSample 开头的任何 ID URI

添加 CRUD API 和作业的范围

要使用工作负载项的创建、读取、更新和删除 (CRUD) API,并对作业执行其他操作,请添加范围。 此外,将两个专用 Fabric 应用程序添加到该范围的预授权应用程序,以指示 API(所创建的范围)信任 Fabric。

添加范围:

  1. 在“公开 API”处,选择“添加范围”。 将范围命名为 FabricWorkloadControl 并输入所需的详细信息。

  2. 在“授权的客户端应用程序”下,选择“添加客户端应用程序”。 添加 d2450708-699c-41e3-8077-b0c8341509aa(工作负载应用程序的 Fabric 客户端)并选择范围。

添加数据平面 API 的范围

需要注册其他范围来表示由数据平面 API 公开的操作组。

在后端示例中,我们提供了四个示例。 有关示例,请参阅 Backend/src/Constants/scopes.cs

该范围包括:

  • Item1.Read.All:用于读取工作负载项
  • Item1.ReadWrite.All:用于读取/写入工作负载项
  • FabricLakehouse.Read.All:用于读取湖屋文件
  • FabricLakehouse.ReadWrite.All:用于读取/写入湖屋文件

对这些范围预授权 871c010f-5e61-4fb1-83ac-98610a7e9110(Fabric 客户端应用程序)。

可以在常用的 Microsoft 应用程序的应用程序 ID 中的“Microsoft Power BI”和“Power BI 服务”下找到这些应用程序的应用程序 ID

“公开 API”部分在应用程序中应如下所示。 在本例中,ID URI 为 api://localdevinstance/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb/Fabric.WorkloadSample

显示“公开 API”部分的外观的屏幕截图。

为应用程序生成一个密码

在“证书和机密”下,选择“机密”选项卡并添加机密。 输入要使用的任何名称,然后保存。 配置后端示例时使用此机密。

“生成机密”对话框的屏幕截图。

添加 idtyp 可选声明

令牌配置下,添加可选的声明。 对于“令牌类型”,请选择“访问”,然后选择 idtyp

显示添加声明“idtyp”的屏幕截图。

添加 API 权限

在“API 权限”下,为应用程序添加所需的权限。 对于后端示例,请添加 Azure 存储user_impersonation(适用于 OneLake API)和 Power BI 服务 Workspace.Read.all(适用于工作负载控制 API):

显示添加 API 权限的屏幕截图。

若要了解有关 API 权限的详细信息,请参阅在 Microsoft Entra ID 中更新应用所需权限

将应用程序设置为使用身份验证令牌 v1

在“清单”下,确保将 设置为 accessTokenAcceptedVersionnull1

使用脚本在 Microsoft Entra ID 中配置应用程序

要在 Microsoft Entra ID 中简化应用程序的设置,可以选择使用自动化 PowerShell 脚本(可选)。

  1. 安装 Azure CLI:首先,安装适用于 Windows的 Azure CLI
  2. 执行 CreateDevAADApp.ps1 脚本:运行 CreateDevAADApp 脚本。 系统提示你使用要在其下创建应用程序的用户帐户的凭据登录。
  3. 提供必需信息:出现提示时,请输入应用程序的所需名称、工作负载名称(前缀为“Org.”)和租户 ID

成功运行脚本后,它将返回配置工作负载所需的所有详细信息。 此外,它还会为应用程序提供直接 URL,并为租户范围的应用程序授权提供管理同意 URL。

用法示例

要为指定租户创建名为“myWorkloadApp”、工作负载名称为“Org.Myworkload”的应用程序,请在 PowerShell 中运行以下命令:

powershell .\CreateDevAADApp.ps1 -applicationName "myWorkloadApp" -workloadName "Org.Myworkload" -tenantId "bbbbcccc-1111-dddd-2222-eeee3333ffff"

此示例演示如何将 CreateDevAADApp.ps1 脚本与命令行参数一起使用来自动执行应用程序设置过程。 提供的租户 ID 只是一个示例。 将示例租户 ID 替换为实际租户 ID。

配置工作负载(后端)

  1. 在后端示例中,转到存储库中的 src/appsettings.json 文件并配置设置

    • PublisherTenantId:发布者的租户 ID。
    • ClientId:应用程序 ID(可在“Microsoft Entra ID 概述”中找到)。
    • ClientSecret:在配置 Microsoft Entra 应用时创建的机密
    • Audience:在 Microsoft Entra 应用中配置的 ID URI
  2. 配置 workloadManifest.xml 文件。 在存储库中,转到 src/Packages/manifest/files/WorkloadManifest.xml 文件。 在“AADApp”下,配置 AppIdredirectUriResourceId (ID URI)。

<AADApp>
    <AppId>YourApplicationId</AppId>
    <RedirectUri>YourRedirectUri</RedirectUri>
    <ResourceId>YourResourceId</ResourceId>
</AADApp>

配置工作负荷本地清单

注意

此步骤仅适用于开发人员模式场景。

配置应用程序后,请更新位于 Frontend 文件夹中的 .env.dev 配置文件中的以下配置

"DEV_AAD_CONFIG_AUDIENCE": "", // The ID URI configured in your application for a developer scenario

"DEV_AAD_CONFIG_REDIRECT_URI": "http://localhost:60006/close", // Or the path you configured in index.ts

"DEV_AAD_CONFIG_APPID": "" // Your app ID

显示 .env.dev 文件的配置的屏幕截图。