Verwenden des Power BI SDK mit Dienstprinzipalprofilen

In diesem Artikel wird erläutert, wie Sie das SDK mit Dienstprinzipalprofilen verwenden. Es gibt zwei Möglichkeiten, einen Power BI-Client mit einem Dienstprinzipalprofil zu verbinden. Ihre Möglichkeiten:

Sobald der Client einem Profil zugeordnet ist, können Sie das aktuelle Profil des Dienstprinzipals aus dem Power BI-Client abrufen.

Erstellen eines Power BI-Clients mit Dienstprinzipalprofil

var profileObjectId = new Guid("81f24a6d-7ebb-4478-99c7-2c36f7870a26"); 
var powerBIclient = new PowerBIClient(credentials, profileObjectId: profileObjectId);

Wenn Sie einen Power BI-Client mit der Profilobjekt-ID erstellen, enthält jeder API-Aufruf, der den Client verwendet, die X-PowerBI-profile-id im Anforderungsheader.

Beispiel:

GET https://powerbiapi.analysis-df.windows.net/v1.0/myorg/groups


Authorization: Bearer eyJ0eXAiO.....5U_g
X-PowerBI-profile-id: 81f24a6d-7ebb-4478-99c7-2c36f7870a26

Festlegen des Profils für den Aufruf der API-Anforderung

Alternativ können Sie die Profil-ID in der API-Anforderung angeben, indem Sie die Eigenschaft customHeaders in der überladenen PowerBIClient-Methode WithHttpMessagesAsync der API verwenden.

var powerBIclient = new PowerBIClient(credentials); 
var profileHeader = new Dictionary<string, List<string>>(); 
profileHeader.Add("X-PowerBI-profile-id", new List<string> { "81f24a6d-7ebb-4478-99c7-2c36f7870a26" }); 
var groups = await powerBIclient.Groups.GetGroupsWithHttpMessagesAsync(customHeaders: profileHeader); 

Beispiel:

GET https://powerbiapi.analysis-df.windows.net/v1.0/myorg/groups 

Authorization: Bearer eyJ0eXAiO.....5U_g 
X-PowerBI-profile-id: 81f24a6d-7ebb-4478-99c7-2c36f7870a26 

Im vorherigen Codebeispiel gehört der Profilheader nicht zu den Clientstandardheadern, weil der Profilheader nicht vom Code hinzugefügt wird. Sie müssen den Profilheader bei jeder API-Anforderung angeben.

Stellen Sie sicher, dass Sie Duplizierungen vermeiden. Wenn Sie z. B. einen Client mit einer Profilobjekt-ID erstellen und dann den Header mit der API-Anforderung angeben, führt dies zu Fehlern des Typs „Nicht autorisiert“.

Abrufen des aktuellen Dienstprinzipalprofils aus dem Power BI-Client

Rufen Sie GetServicePrincipalProfileObjectId auf, um das aktuelle Dienstprinzipalprofil aus dem SDK-Client abzurufen.

var profileObjectId = new Guid("81f24a6d-7ebb-4478-99c7-2c36f7870a26"); 
var powerBIclient = new PowerBIClient(credentials, profileObjectId: profileObjectId); 
var currentProfileObjectId = powerBIclient.GetServicePrincipalProfileObjectId(); 

Überlegungen und Einschränkungen

Dienstprinzipalprofile werden im Liveverbindungsmodus nicht mit Azure Analysis Services (AAS) unterstützt.

Nächste Schritte