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
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();
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.
Recupere a chave pública do gateway chamando Obter Gateway.
var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
Criptografe as credenciais.
var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
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);
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
Instale o Gateway de dados local no seu computador.
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();
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.
Crie o corpo da solicitação.
var request = new PublishDatasourceToGatewayRequest( dataSourceType: "SQL", connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}", credentialDetails: credentialDetails, dataSourceName: "my sql datasource");
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.