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:
- Erstellen eines Clients mit einer Profilobjekt-ID
- Angeben der Profil-ID im Aufruf der API-Anforderung
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.