凭证

可以在命令之间缓存和重用数据源凭证。 默认情况下,该缓存存储在 %LOCALAPPDATA%/Microsoft/pqtest 之下的本地文件中,并且使用当前用户密钥进行加密

作为本地文件存储的备选方案,可将凭证存储在 Azure Key Vault 中。 可以使用 --keyVault / -kv 选项启用此选项,提供一个密钥保管库名称作为选项参数,并设置下表中指定的环境变量:

注意

使用 Azure Key Vault 时,凭证存储为单个二进制对象而不是单个密码。

变量 详细信息 示例
PQTEST_AZURE_CLIENT_ID 经授权可访问密钥保管库的 Microsoft Entra ID 应用的 ID (GUID)。 c265f4e8-a32f-4548-a21e-3542ec65134a
PQTEST_AZURE_CLIENT_SECRET Microsoft Entra ID 应用的客户端密码。 <client-secret-placeholder>
PQTEST_AZURE_TENANT_ID 拥有 Azure Key Vault 的租户的 ID (GUID)。 c265f4e8-a32f-4548-a21e-3542ec65134a
PQTEST_AZURE_KEY_VAULT_URL 密钥保管库 URL。 https://<myvault>.vault.azure.net

示例:如何使用 keyVault 选项:

set PQTEST_AZURE_CLIENT_ID="c265f4e8-a32f-4548-a21e-3542ec65134a"
set PQTEST_AZURE_CLIENT_SECRET="<client-secret-placeholder>"
set PQTEST_AZURE_TENANT_ID="c265f4e8-a32f-4548-a21e-3542ec65134a"
set PQTEST_AZURE_KEY_VAULT_URL="https://myvault.vault.azure.net"

<Path to PQTest.exe>.\PQTest.exe list-credential --keyVault secretName

Credential-template

使用此命令生成 JSON 格式的凭证模板,该模板可传递到 set-credential 命令中。 该命令需要提供扩展数据源信息。 如果数据源支持多种身份验证,则需要指定 --authenticationKind / -ak 选项要使用哪种身份验证。

输出模板具有识别为$$<密码名称>$$的占位符值,在将其传递给 set-credential 命令之前应将其替换。

例如,MyConnector 同时支持匿名和 UsernamePassword 两种身份验证。

若要生成 Anonymous 凭证,可以使用以下命令:

<Path to PQTest.exe>.\PQTest.exe credential-template --extension MyConnector.mez --queryFile MyConnectorQuery.m --prettyPrint --authenticationKind Anonymous

注意

输出 JSON 值不包含任何点位符值,因为 Anonymous 种类不要求任何点位符。

{
  "AuthenticationKind": "Anonymous",
  "AuthenticationProperties": {},
  "PrivacySetting": "None",
  "Permissions": []
}

可以使用以下命令为同一连接器生成 UsernamePassword 凭证:

<Path to PQTest.exe>.\PQTest.exe credential-template --extension MyConnector.mez --queryFile MyConnectorQuery.m --prettyPrint --authenticationKind UsernamePassword

生成的模板包含 $$USERNAME$$$$PASSWORD$$ 占位符值。

{
  "AuthenticationKind": "UsernamePassword",
  "AuthenticationProperties": {
    "Username": "$$USERNAME$$",
    "Password": "$$PASSWORD$$"
  },
  "PrivacySetting": "None",
  "Permissions": []
}

Set-credential

使用此命令存储 test-connectionrun-test 命令使用的凭证。 该命令需要提供扩展数据源信息。 可以通过以下三种方式之一设置凭证:

  • 使用 JSON 格式的凭证。
  • 不需要进行其他设置(AnonymousWindows)的身份验证种类的自动凭证。
  • 使用交互式模式。

JSON 格式的凭证

可以使用 JSON 凭证格式设置任何凭证种类。 使用credential-template 凭证生成凭证 JSON。

使用 JSON 模板设置凭证时,必须将输入传递给命令或通过文件从 stdin 提供。

以下示例为如何通过将 credential-template 命令的结果传递给 set-credential 来设置 Anonymous 凭证:

<Path to PQTest.exe>.\PQTest.exe credential-template -e MyConnector.mez -q MyConnectorQuery.m -p -ak Anonymous | pqtest set-credential -e MyConnector.mez -q MyConnectorQuery.m -p
{
  "Details": {
    "Kind": "MyConnector",
    "Path": "MyConnector",
    "NormalizedPath": "MyConnector",
    "IsDefaultForKind": false
  },
  "Message": "Successfully set credential",
  "Status": "Success"
}

注意

可以使用自动凭证设置 AnonymousWindows 凭证。

以下示例为如何从存储在磁盘上的文件设置凭证(使用重定向输入):

<Path to PQTest.exe>.\PQTest.exe set-credential -e MyConnector.mez -q MyConnectorQuery.m -p < mySavedCredential.json
{
  "Details": {
    "Kind": "MyConnector",
    "Path": "MyConnector",
    "NormalizedPath": "MyConnector",
    "IsDefaultForKind": false
  },
  "Message": "Successfully set credential",
  "Status": "Success"
}

自动凭证

无需提供凭证模板即可设置 AnonymousWindows 凭证。

注意

默认使用当前用户的标识来设置 Windows 凭证。 使用 credential-template 命令生成可修改为使用备选 Windows 帐户凭证的 JSON 凭证。

若要生成 Windows 凭证,可以使用以下命令:

<Path to PQTest.exe>.\PQTest.exe set-credential -e MyConnector.mez -q MyConnectorQuery.m -p --authenticationKind windows

若要生成 Anonymous 凭证,可以使用以下命令:

<Path to PQTest.exe>.\PQTest.exe set-credential -e MyConnector.mez -q MyConnectorQuery.m -p --authenticationKind anonymous

交互模式

可以使用 --interactive 命令行选项,在交互式模式下设置凭证。

OAuthAad 身份验证种类可以使用交互式模式。 在此模式下运行此命令会出现 OAuth 对话框,可用于测试 OAuth 实现。

交互式 OAuth 流使用 WebView2 (Microsoft Edge Chromium) 浏览器组件,该组件可能需要单独安装。 请参阅适用于 Power BI Desktop 的 Power Query OAuth 文档,了解详细信息。

--useLegacyBrowser 选项可用于强制 IE11 嵌入式浏览器窗口。