Usar o SDK do Power BI com perfis de entidade de serviço
Este artigo explica como usar o SDK com perfis de entidade de serviço. Há duas maneiras de conectar um cliente do Power BI a um perfil de entidade de serviço. Você pode:
- Criar um cliente com uma ID de objeto de perfil
- Especificar a ID do perfil na chamada de solicitação à API
Depois que o cliente estiver associado a um perfil, você poderá obter o perfil da entidade de serviço atual do cliente do Power BI.
Criar um cliente do Power BI com um perfil de entidade de serviço
var profileObjectId = new Guid("81f24a6d-7ebb-4478-99c7-2c36f7870a26");
var powerBIclient = new PowerBIClient(credentials, profileObjectId: profileObjectId);
Quando você cria um cliente do Power BI com a ID do objeto de perfil, cada chamada à API que usa o cliente tem X-PowerBI-profile-id
no cabeçalho da solicitação.
Por exemplo:
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
Definir perfil na chamada de solicitação à API
Como alternativa, você pode especificar a ID do perfil na solicitação à API usando a propriedade customHeaders
no método WithHttpMessagesAsync
do PowerBIClient sobrecarregado da API.
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);
Por exemplo,
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
No exemplo de código anterior, o cabeçalho do perfil não faz parte dos cabeçalhos padrão do cliente, pois o código não adiciona o cabeçalho do perfil. Você precisa especificar o cabeçalho do perfil com cada solicitação à API.
Evite duplicações. Por exemplo, criar um cliente com uma ID de objeto de perfil e especificar o cabeçalho com a solicitação à API resultará em erros por falta de autorização.
Obter o perfil da entidade de serviço atual do cliente do Power BI
Para recuperar o perfil da entidade de serviço atual do cliente do SDK, chame GetServicePrincipalProfileObjectId
.
var profileObjectId = new Guid("81f24a6d-7ebb-4478-99c7-2c36f7870a26");
var powerBIclient = new PowerBIClient(credentials, profileObjectId: profileObjectId);
var currentProfileObjectId = powerBIclient.GetServicePrincipalProfileObjectId();
Considerações e limitações
Não há suporte para perfis de entidade de serviço com AAS (Azure Analysis Services) no modo de conexão dinâmica.