Programowe konfigurowanie poświadczeń dla usługi Power BI
DOTYCZY: Aplikacja jest właścicielem danych Użytkownik jest właścicielem danych
Aby programowo skonfigurować poświadczenia dla usługi Power BI, wykonaj kroki opisane w tym artykule. Programowe konfigurowanie poświadczeń umożliwia również szyfrowanie poświadczeń.
Uwaga
- Użytkownik wywołujący musi być właścicielem modelu semantycznego lub administratorem bramy. Możesz również użyć jednostki usługi. Na przykład jednostka usługi może być semantycznym właścicielem modelu.
- Źródła danych w chmurze i ich odpowiednie poświadczenia są zarządzane na poziomie użytkownika.
Aktualizowanie przepływu poświadczeń dla źródeł danych
Odnajdź źródła danych modelu semantycznego, wywołując funkcję Pobierz źródła danych. Treść odpowiedzi dla każdego źródła danych zawiera typ, szczegóły połączenia, bramę i identyfikator źródła danych.
// Select a datasource var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value; var datasource = datasources.First();
Skompiluj ciąg poświadczeń zgodnie z przykładami aktualizacji źródła danych. Zawartość ciągu poświadczeń zależy od typu poświadczeń.
var credentials = new BasicCredentials(username: "username", password :"*****");
Uwaga
Jeśli używasz źródeł danych w chmurze, nie wykonaj następnych kroków w tej sekcji. Wywołaj metodę Aktualizuj źródło danych, aby ustawić poświadczenia przy użyciu identyfikatora bramy i identyfikatora źródła danych uzyskanego w kroku 1.
Pobierz klucz publiczny bramy, wywołując polecenie Pobierz bramę.
var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
Szyfruj poświadczenia.
var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
Skompiluj szczegóły poświadczeń przy użyciu zaszyfrowanych poświadczeń.
Użyj klasy AsymetricKeyEncryptor z kluczem publicznym pobranym w kroku 3.
var credentialDetails = new CredentialDetails( credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Ustawianie poświadczeń przez wywołanie źródła danych aktualizacji.
pbiClient.Gateways.UpdateDatasource(datasource.GatewayId.Value, datasource.DatasourceId.Value, new UpdateDatasourceRequest(credentialDetails));
Konfigurowanie nowego źródła danych dla bramy danych
Pobierz identyfikator bramy i klucz publiczny, wywołując polecenie Pobierz bramy.
// Select a gateway var gateways = pbiClient.Gateways.GetGateways().Value; var gateway = gateways.First();
Szczegóły poświadczeń kompilacji, wykonując procedurę opisaną w sekcji Przepływ poświadczeń aktualizacji dla źródeł danych przy użyciu klucza publicznego bramy pobranego w kroku 2.
Skompiluj treść żądania.
var request = new PublishDatasourceToGatewayRequest( dataSourceType: "SQL", connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}", credentialDetails: credentialDetails, dataSourceName: "my sql datasource");
Wywołaj interfejs API tworzenia źródła danych.
pbiClient.Gateways.CreateDatasource(gateway.Id, request);
Typy poświadczeń
W przypadku wywoływania metody Create Datasource lub Update Datasource from the Power BI REST API on an enterprise on-premises gateway (Tworzenie źródła danych lub aktualizowanie źródła danych z interfejsu API REST usługi Power BI w bramie lokalnej bramy) należy zaszyfrować wartość poświadczeń przy użyciu klucza publicznego bramy.
Uwaga
Zestaw .NET SDK w wersji 3 może również uruchamiać następujące przykłady zestawu .NET SDK w wersji 2.
Windows i podstawowe poświadczenia
// 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);
Poświadczenia klucza
var credentials = new KeyCredentials("TestKey");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Poświadczenia protokołu OAuth2
var credentials = new OAuth2Credentials("TestToken");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Poświadczenia anonimowe
var credentials = new AnonymousCredentials();
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.NotEncrypted);
Rozwiązywanie problemów
Podczas wywoływania pobierania źródeł danych nie można odnaleźć bramy i identyfikatora źródła danych
Ten problem oznacza, że model semantyczny nie jest powiązany z bramą. Podczas tworzenia nowego modelu semantycznego źródło danych bez poświadczeń jest tworzone automatycznie w bramie chmury użytkownika dla każdego połączenia w chmurze. Brama w chmurze służy do przechowywania poświadczeń dla połączeń w chmurze.
Po utworzeniu modelu semantycznego zostanie utworzone automatyczne powiązanie między modelem semantycznym i odpowiednią bramą, która zawiera pasujące źródła danych dla wszystkich połączeń. Automatyczne powiązanie kończy się niepowodzeniem, jeśli nie ma odpowiedniej bramy ani bram.
Jeśli używasz lokalnych modeli semantycznych, utwórz brakujące lokalne źródła danych i powiąż model semantyczny z bramą ręcznie przy użyciu powiązania z bramą.
Aby odnaleźć bramy, które można powiązać, użyj funkcji Odnajdywanie bram.