桌面应用中的身份验证

首次尝试使用新连接器连接到数据源时,系统可能会要求选择访问数据时要使用的身份验证方法。 选择身份验证方法后,不会再次要求使用指定的连接参数为连接器选择身份验证方法。 但是,如果需要稍后更改身份验证方法,可以执行此操作。

选择身份验证方法

不同的连接器会显示不同的身份验证方法。 例如,Power BI Desktop 和 Excel 中的 OData 源连接器将显示以下身份验证方法对话框。

Power Query Desktop 中 OData 源的身份验证对话框的屏幕截图。

如果使用的是联机应用中的连接器(如 Power BI 服务或 Power Apps),Power Query 会显示 OData 源连接器的身份验证方法对话框,如下图所示。

Power Query Online 中 OData 连接器连接数据源窗口的屏幕截图。

如同看到的那样,从联机应用呈现各种身份验证方法选择。 此外,在在线应用中,某些连接器可能要求输入本地数据网关的名称,以便能够连接到数据。 有关 Power Query Online 中的身份验证的详细信息,请转到 Power Query Online 中的连接和身份验证。

设置身份验证方法的级别

在需要输入 URL 的连接器中,系统会要求选择将应用身份验证方法的级别。 例如,如果选择 URL 为 https://contoso.com/2020data/List_of_countries_and_capitals 的 Web 连接器,则身份验证方法的默认级别设置是 https://contoso.com

身份验证对话框的屏幕截图,其中显示了级别选择,级别设置为默认设置。

为此连接器选择的身份验证方法选择的级别决定了 URL 的哪个部分应用身份验证方法。 如果选择顶层 Web 地址,此处选择的身份验证方法将用于该 URL 地址或该地址中的任何子地址。

但是,可能不希望将顶层 URL 地址设置为特定的身份验证方法,因为不同的子地址可能需要不同的身份验证方法。 一个示例可能是,如果访问单个 SharePoint 网站的两个单独的文件夹,并且想要使用不同的 Microsoft 帐户来访问每个文件夹。

为连接器的特定地址设置身份验证方法后,无需使用该 URL 地址或任何子地址为该连接器选择身份验证方法。 例如,假设选择 https://contoso.com/ 地址作为希望应用 Web 连接器 URL 设置的级别。 每当使用 Web 连接器访问以此地址开头的任何网页时,就不需要再次选择身份验证方法。

更改身份验证方法

一般而言,当 Power Query 识别一组连接设置时,它会尝试在其各自的凭据存储中查找,以查看是否存在与这些设置匹配的连接,如果存在,则会自动选择该连接。 但在某些情况下,可能需要更改连接器中用于访问特定数据源的身份验证方法。

要在 Power BI Desktop 或 Excel 中编辑身份验证方法:

  1. 执行下列操作之一:

    • 在 Power BI Desktop 的文件选项卡上,选择选项和设置>数据源设置

      Power BI Desktop 文件选项卡窗格的屏幕截图,其中突出显示了“选项”和“设置”和“数据源设置”。

    • 在 Excel 的数据选项卡上,选择获取数据>数据源设置

      Excel 工作簿的屏幕截图,其中突出显示了“数据源设置”选项。

  2. 数据源设置对话框中,选择全局权限,选择要更改权限设置的数据源,然后选择编辑权限

  3. 编辑权限对话框中的凭据下,选择编辑

    “编辑权限”对话框的屏幕截图,其中包含用于更改凭证和隐私级别的位置。

  4. 将凭据更改为数据源所需的类型,选择保存,然后选择确定

还可以通过为所选数据源选择清除权限,或为列出的所有数据源选择清除所有权限,来在步骤 3 中删除特定数据源的凭据。

使用 Web 和 OData 连接器与 Microsoft Entra ID 连接

当连接到需要通过基于 OAuth 或 Microsoft Entra ID 的身份验证进行身份验证的数据源和服务时,在某些情况下,如果服务配置正确,则可以使用内置的 WebOData 连接器,对数据进行身份验证和连接到数据,而无需特定于服务的连接器或自定义连接器。

本节概述了未正确配置服务时的连接症状。 它还提供有关 Power Query 在正确配置服务时如何与服务交互的信息。

未正确配置服务时的症状

可能会遇到错误“无法连接,因为此资源不支持此凭据类型。请选择其他凭据类型”。 此错误意味着服务不支持身份验证类型。

可能出现此错误的一个示例是在 Northwind OData 服务中。

  1. 使用 OData 连接器在“获取数据”体验中输入 Northwind 端点。

    OData 源获取数据对话框的屏幕截图,其中“Northwind 站点”输入为 URL。

  2. 选择确定以输入身份验证体验。 通常,由于 Northwind 不是经过身份验证的服务,因此只需使用匿名。 要演示对 Microsoft Entra ID 缺乏支持,请选择“机构帐户”,然后选择“登录”

    “身份验证”对话框的屏幕截图,其中选择了“组织帐户”选项卡。

  3. 遇到错误,指示服务不支持 OAuth 或 Microsoft Entra ID 身份验证。

    显示无法连接错误消息的身份验证对话框的屏幕截图。

支持的工作流

在 OAuth 中正常工作的一个受支持服务示例是 CRM,例如 https://contoso.crm.dynamics.com/api/data/v8.2

  1. 使用 OData 连接器在“获取数据”体验中输入 URL。

    OData 源的屏幕截图,其中显示了 URL 中输入的 CRM 地址的数据体验。

  2. 选择组织帐户,然后选择登录,以继续使用 OAuth 进行连接。

    身份验证对话框的屏幕截图,其中已选择组织帐户并准备好登录。

  3. 请求成功,OAuth 流继续允许成功进行身份验证。

    “身份验证”对话框的屏幕截图,其中选择了组织帐户,并且用户已成功登录。

在上面的步骤 2 中选择登录时,Power Query 会使用具有空持有者令牌的授权标头向提供的 URL 端点发送请求。

GET https://contoso.crm.dynamics.com/api/data/v8.2 HTTP/1.1
Authorization: Bearer
User-Agent: Microsoft.Data.Mashup (https://go.microsoft.com/fwlink/?LinkID=304225)
Host: pbi.crm.dynamics.com
Connection: Keep-Alive

然后,该服务应使用 401 响应做出响应,其中 WWW-Authenticate 标头指示要使用的 Microsoft Entra ID 授权 URI。 此响应应包括要登录到的租户;如果资源未与特定租户关联,则为 /common/

HTTP/1.1 401 Unauthorized
Cache-Control: private
Content-Type: text/html
Server: 
WWW-Authenticate: Bearer authorization_uri=https://login.microsoftonline.com/3df2eaf6-33d0-4a10-8ce8-7e596000ebe7/oauth2/authorize 
Date: Wed, 15 Aug 2018 15:02:04 GMT
Content-Length: 49

然后,Power Query 可以针对 authorization_uri 启动 OAuth 流。 Power Query 请求与所请求的 URL 域相等的 Microsoft Entra ID 资源或受众值。 此值将是 API/服务注册中用于 Azure 应用程序 ID URL 值的值。 例如,如果访问 https://api.myservice.com/path/to/data/api,Power Query 会要求应用程序 ID URL 值等于 https://api.myservice.com

如果需要对 OAuth 流进行更多控制(例如,如果服务必须使用 302 而不是 401 响 应),或者应用程序的应用程序 ID URL 或 Microsoft Entra ID 资源值与服务的 URL 不匹配,则需要使用自定义连接器。 有关使用内置 Microsoft Entra ID 流的详细信息,请转到 Microsoft Entra ID 身份验证

Microsoft Entra ID 客户端 ID

Power Query 使用以下 Microsoft Entra ID 客户端 ID。 可能需要根据整个 Microsoft Entra ID 设置,显式允许这些客户端 ID 访问服务和 API。 有关更多详细信息,请转到添加范围的步骤 8。

客户端 ID 标题 说明
a672d62c-fc7b-4e81-a576-e60dc46e951d Power Query for Excel Power BI Desktop 和网关中使用的公共客户端。
b52893c8-bc2e-47fc-918b-77022b299bbc Power BI 数据刷新 Power BI 服务中使用的机密客户端。
7ab7862c-4c57-491e-8a45-d52a7e023983 Power Apps 和 Power Automate Power Apps 和 Power Automate 中使用的机密客户端。