Configurar credenciais de forma programática para o Power BI

APLICA-SE A: Aplicativo possui dados O usuário possui dados

Para configurar as credenciais por meio de programação para o Power BI, siga as etapas deste artigo. Configurar credenciais programaticamente também permite criptografar credenciais.

Observação

  • O usuário da chamada deve ser proprietário de um modelo semântico ou administrador de gateway. Você também pode usar uma entidade de serviço. Por exemplo, a entidade de serviço pode ser o proprietário do modelo semântico.
  • As fontes de dados de nuvem e suas credenciais correspondentes são gerenciadas no nível do usuário.

Atualizar fluxo de credenciais para fontes de dados

  1. Descubra as fontes de dados do modelo semântico chamando Obter Fontes de Dados. O corpo da resposta para cada fonte de dados contém o tipo, os detalhes de conexão, o gateway e a ID da fonte de dados.

    // Select a datasource
    var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value;
    var datasource = datasources.First();
    
  2. Crie a cadeia de caracteres de credenciais de acordo com os Exemplos de Atualizar Fonte de Dados. O conteúdo da cadeia de caracteres de credenciais depende do tipo de credenciais.

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

    Observação

    Se você estiver usando fontes de dados de nuvem, não siga as próximas etapas nesta seção. Chame Atualizar Fonte de Dados para definir as credenciais usando a ID do gateway e a ID da fonte de dados que você obteve na etapa 1.

  3. Recupere a chave pública do gateway chamando Obter Gateway.

    var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
    
  4. Criptografe as credenciais.

    var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
    
  5. Compile os detalhes de credenciais com credenciais criptografadas.

    Use a classe AsymetricKeyEncryptor com a chave pública recuperada na Etapa 3.

    var credentialDetails = new CredentialDetails(
            credentials,
            PrivacyLevel.Private,
            EncryptedConnection.Encrypted,
            credentialsEncryptor);
    
  6. Defina as credenciais chamando Atualizar Fonte de Dados.

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

Configurar uma nova fonte de dados para um gateway de dados

  1. Instale o Gateway de dados local no seu computador.

  2. Recupere a chave pública e a ID do gateway chamando Obter Gateways.

    // Select a gateway
    var gateways = pbiClient.Gateways.GetGateways().Value;
    var gateway = gateways.First();
    
  3. Compile detalhes de credenciais seguindo o procedimento descrito na seção fluxo de atualização de credenciais para fontes de dados usando a chave pública do gateway que você recuperou na etapa 2.

  4. Crie o corpo da solicitação.

    var request = new PublishDatasourceToGatewayRequest(
            dataSourceType: "SQL",
            connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}",
            credentialDetails: credentialDetails,
            dataSourceName: "my sql datasource");
    
  5. Chame a API Criar Fonte de Dados.

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

Tipos de credenciais

Quando você chama Criar Fonte de Dados ou Atualizar Fonte de Dados da API REST do Power BI em um gateway local corporativo, criptografa o valor das credenciais usando a chave pública do gateway.

Observação

O .NET SDK v3 também pode executar os exemplos de .NET SDK v2 a seguir.

Windows e credenciais básicas

// Windows credentials
var credentials = new WindowsCredentials(username: "john", password: "*****");

// Or

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

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

Credenciais de chave

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

Credenciais do OAuth2

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

Credenciais anônimas

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

Solução de problemas

Nenhuma ID da fonte de dados e do gateway foi encontrada ao chamar obter fontes de dados

Esse problema significa que o modelo semântico não está associado a um gateway. Ao criar um novo modelo semântico, uma fonte de dados sem credenciais será criada automaticamente no gateway de nuvem do usuário para cada conexão de nuvem. O gateway de nuvem é usado para armazenar as credenciais para conexões de nuvem.

Depois de criar o modelo semântico, uma associação automática é criada entre o conjunto de dados e um gateway adequado, que contém as fontes de dados correspondente para todas as conexões. A associação automática falhará se não houver gateway ou gateways adequados.

Se você estiver usando modelos semânticos no local, crie as fontes de dados locais ausentes e associe o modelo semântico a um gateway manualmente usando Associar ao Gateway.

Para descobrir os gateways que podem ser associados, use Descobrir Gateways.