以编程方式为 Power BI 配置凭据

  • 版本 :2023.1(当前版本)

以编程方式为 Power BI 配置凭据

✔️ 应用拥有数据 ✔️ 用户拥有数据

按照本文中的步骤以编程方式为 Power BI 配置凭据。 以编程方式配置凭据还允许加密凭据。

备注

  • 调用用户必须是数据集所有者或网关管理员。还可以使用服务主体。 例如,服务主体可以是数据集所有者。

  • 云数据源及其相应的凭据在用户级别进行管理。

更新数据源的凭据流

  1. 调用 Get Datasources 发现数据集的数据源。 每个数据源的响应正文都包含类型、连接详细信息、网关和数据源 ID。

    C#复制

    // Select a datasourcevar datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;var datasource = datasources.First();
  2. 根据更新数据源示例生成凭据字符串。 凭据字符串的内容取决于凭据的类型。

    C#复制

    var credentials =  new BasicCredentials(username: "username", password :"*****");

    备注

    如果你使用的是云数据源,请不要执行本部分中的后续步骤。 调用 Update Datasource 以使用在步骤 1 中获取的网关 ID 和数据源 ID 设置凭据。

    • .NET SDK v3

    • .NET SDK v2

  3. 调用 Get Gateway 检索网关公钥。

    C#复制

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
  4. 加密凭据。

    C#复制

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);

    • .NET SDK v3

    • .NET SDK v2

  5. 使用加密凭据生成凭据详细信息。

    将 AsymetricKeyEncryptor 类与在步骤 3 中检索到的公钥结合使用。

    C#复制

    var credentialDetails = new CredentialDetails(
    credentials,
    PrivacyLevel.Private,
    EncryptedConnection.Encrypted,
    credentialsEncryptor);

    • .NET SDK v3

    • .NET SDK v2

  6. 调用 Update Datasource 设置凭据。

    C#复制

    pbiClient.Gateways.UpdateDatasource(datasource.GatewayId.Value, datasource.DatasourceId.Value, new UpdateDatasourceRequest(credentialDetails));

为数据网关配置新的数据源

  1. 在计算机上安装本地数据网关。

  2. 调用 Get Gateways 检索网关 ID 和公钥。

    C#复制

    // Select a gatewayvar gateways = pbiClient.Gateways.GetGateways().Value;var gateway = gateways.First();
  3. 使用步骤 2 中检索到的网关公钥,按照更新数据源的凭据流部分所述的流程操作,生成凭据详细信息。

  4. 生成请求正文。

    C#复制

    var request = new PublishDatasourceToGatewayRequest(
    dataSourceType: "SQL",
    connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
    credentialDetails: credentialDetails,
    dataSourceName: "my sql datasource");
  5. 调用 Create Datasource API。

    C#复制

    pbiClient.Gateways.CreateDatasource(gateway.Id, request);

凭据类型

如果在企业本地网关上通过 Power BI REST API 调用 Create Datasource 或 Update Datasource,请使用网关公钥加密凭据值。

备注

.NET SDK v3 还可以运行下面的 .NET SDK v2 示例。

Windows 和基本凭据

  • .NET SDK v3

  • .NET SDK v2

C#复制

// Windows credentialsvar credentials = new WindowsCredentials(username: "john", password: "*****");// Or// Basic credentialsvar credentials = new BasicCredentials(username: "john", password: "*****");var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

密钥凭据

  • .NET SDK v3

  • .NET SDK v2

C#复制

var credentials = new KeyCredentials("TestKey");var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

OAuth2 凭据

  • .NET SDK v3

  • .NET SDK v2

C#复制

var credentials = new OAuth2Credentials("TestToken");var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);

匿名凭据

  • .NET SDK v3

  • .NET SDK v2

C#复制

var credentials = new AnonymousCredentials();var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.NotEncrypted);

故障排除

调用 Get Datasources 时未找到任何网关和数据源 ID

此问题意味着数据集未绑定到网关。 在新建数据集时,将在用户的云网关上自动为每个云连接创建不含凭据的数据源。 此云网关用于存储云连接的凭据。

创建数据集后,会在数据集与合适的网关之间创建自动绑定,网关包含适用于所有连接的匹配数据源。 如果没有合适的网关,自动绑定将失败。

如果使用的是本地数据集,请创建缺少的本地数据源,并按照绑定到网关中的说明操作,手动将数据集绑定到网关。

要发现可绑定的网关,请使用 Discover Gateways。