Programmgesteuertes Konfigurieren von Anmeldeinformationen für Power BI
GILT FÜR: Die App besitzt die Daten Der Benutzer besitzt die Daten
Befolgen Sie die Schritte in diesem Artikel, um Anmeldeinformationen programmgesteuert für Power BI zu konfigurieren. Wenn Sie Anmeldeinformationen programmgesteuert konfigurieren, können Sie Anmeldeinformationen auch verschlüsseln.
Hinweis
- Der/die aufrufende Benutzer*in muss Semantikmodellbesitzer*in oder Gatewayadministrator*in sein. Sie können auch einen Dienstprinzipal verwenden. Der Dienstprinzipal kann z. B. der/die Besitzer*in des Semantikmodells sein.
- Clouddatenquellen und die zugehörigen Anmeldeinformationen werden auf Benutzerebene verwaltet.
Aktualisieren des Anmeldeinformationsflows für Datenquellen
Entdecken Sie die Datenquellen des semantischen Modells durch Aufrufen von Datenquellen abrufen. Im Antworttext für jede Datenquelle sind Typ, Verbindungsdetails, Gateway und Datenquellen-ID angegeben.
// Select a datasource var datasources = pbiClient.Datasets.GetDatasources(datasetId).Value; var datasource = datasources.First();
Erstellen Sie die Anmeldeinformationszeichenfolge gemäß der Beispiele zum Aktualisieren von Datenquellen. Der Inhalt der Anmeldeinformationszeichenfolge hängt vom Typ der Anmeldeinformationen ab.
var credentials = new BasicCredentials(username: "username", password :"*****");
Hinweis
Wenn Sie Clouddatenquellen verwenden, führen Sie die nächsten Schritte in diesem Abschnitt nicht aus. Rufen Sie Datenquelle aktualisieren auf, um die Anmeldeinformationen mithilfe der Gateway-ID und der Datenquellen-ID, die Sie in Schritt 1 erhalten haben, festzulegen.
Um den öffentlichen Gatewayschlüssel abzurufen, rufen Sie Gateway abrufen auf.
var gateway = pbiClient.Gateways.GetGatewayById(datasource.GatewayId);
Verschlüsseln Sie die Anmeldeinformationen.
var credentialsEncryptor = new AsymmetricKeyEncryptor(gateway.publicKey);
Erstellen Sie mit den verschlüsselten Anmeldeinformationen Details zu Anmeldeinformationen.
Verwenden Sie die AssymetricKeyEncryptor-Klasse mit dem in Schritt 3 abgerufenen öffentlichen Schlüssel.
var credentialDetails = new CredentialDetails( credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Legen Sie Anmeldeinformationen fest, indem Sie Datenquelle aktualisieren aufrufen.
pbiClient.Gateways.UpdateDatasource(datasource.GatewayId.Value, datasource.DatasourceId.Value, new UpdateDatasourceRequest(credentialDetails));
Konfigurieren einer neuen Datenquelle für ein Datengateway
Installieren Sie das lokale Datengateway auf Ihrem Computer.
Um die Gateway-ID und den öffentlichen Schlüssel abzurufen, rufen Sie Gateways abrufen auf.
// Select a gateway var gateways = pbiClient.Gateways.GetGateways().Value; var gateway = gateways.First();
Erstellen Sie Details zu Anmeldeinformationen, indem Sie das im Abschnitt Flow zum Aktualisieren von Anmeldeinformationen für Datenquellen beschriebene Verfahren mithilfe des öffentlichen Gatewayschlüssels ausführen, den Sie in Schritt 2 abgerufen haben.
Erstellen Sie den Anforderungstext.
var request = new PublishDatasourceToGatewayRequest( dataSourceType: "SQL", connectionDetails: "{\"server\":\"myServer\",\"database\":\"myDatabase\"}", credentialDetails: credentialDetails, dataSourceName: "my sql datasource");
Rufen Sie die API zum Erstellen von Datenquellen auf.
pbiClient.Gateways.CreateDatasource(gateway.Id, request);
Arten von Anmeldeinformationen
Wenn Sie Datenquelle erstellen oder Datenquelle aktualisieren über die Power BI-REST-API in einem lokalen Unternehmensgateway aufrufen, verschlüsseln Sie den Wert der Anmeldeinformationen mithilfe des öffentlichen Gatewayschlüssels.
Hinweis
.NET SDK v3 kann auch die folgenden .NET SDK v2-Beispiele ausführen.
Windows und einfache Anmeldeinformationen
// 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);
Wichtige Anmeldeinformationen
var credentials = new KeyCredentials("TestKey");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
OAuth2-Anmeldeinformationen
var credentials = new OAuth2Credentials("TestToken");
var credentialsEncryptor = new AsymmetricKeyEncryptor(publicKey);
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.Encrypted, credentialsEncryptor);
Anonyme Anmeldeinformationen
var credentials = new AnonymousCredentials();
var credentialDetails = new CredentialDetails(credentials, PrivacyLevel.Private, EncryptedConnection.NotEncrypted);
Problembehandlung
Beim Aufrufen von „Datenquelle abrufen“ werden keine Gateway- und Datenquellen-ID gefunden
Dieses Problem bedeutet, dass das Semantikmodell nicht an ein Gateway gebunden ist. Beim Erstellen eines neuen Semantikmodells wird im Cloudgateway des Benutzers oder der Benutzerin für jede Cloudverbindung automatisch eine Datenquelle ohne Anmeldeinformationen erstellt. Dieses Cloudgateway wird verwendet, um die Anmeldeinformationen für Cloudverbindungen zu speichern.
Nachdem Sie das Semantikmodell erstellt haben, wird eine automatische Bindung zwischen ihm und einem passenden Gateway hergestellt, die übereinstimmende Datenquellen für alle Verbindungen enthält. Bei der automatischen Bindung tritt ein Fehler auf, wenn keine geeigneten Gateways vorhanden sind.
Wenn Sie lokale Semantikmodelle verwenden, erstellen Sie die fehlenden lokalen Datenquellen, und binden Sie das Semantikmodell mithilfe von Bind To Gateway (An Gateway binden) manuell an ein Gateway.
Um Gateways zu ermitteln, die gebunden werden könnten, verwenden Sie Gateways entdecken.