PowerBI客户端无法与Azure AD服务主体

时间:2018-03-27 17:48:19

标签: azure azure-active-directory powerbi powerbi-embedded

我正在尝试从PowerBI API获取数据(使用Microsoft.PowerBI.Api.V2客户端dll)。以下是我的代码:

private static async Task getEmbedTokens(string accessToken)
        {
            var tokenCredentials = new TokenCredentials(accessToken, "Bearer");
            var client = new PowerBIClient(new Uri("https://api.powerbi.com/"), tokenCredentials);
            var reports = await client.Reports.GetReportsInGroupAsync("<groupid here>");
            // Get the first report in the group.
            var report = reports.Value.FirstOrDefault();
            if (report != null)
            {
                var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");
                var tokenResponse = await client.Reports.GenerateTokenInGroupAsync("<group id here>", "<report id here>", generateTokenRequestParameters);
                if (tokenResponse != null)
                {
                    // Generate Embed Configuration.
                    var embedConfig = new EmbedConfig()
                    {
                        EmbedToken = tokenResponse,
                        EmbedUrl = report.EmbedUrl,
                        Id = report.Id
                    };
                }

            }
        } 

现在我使用ADAL生成承载令牌,我尝试了以下两种情况:

场景1:使用UserCredentials(服务帐户)生成承载令牌

这里我使用服务帐户生成承载令牌。服务帐户可以访问powerbi仪表板。

var credential = new UserPasswordCredential("username@tenantname.onmicrosoft.com", "password");

场景2:使用ClientCredentials(服务主体)获取承载令牌

这里我使用客户端ID,服务主体的客户端秘密。服务主体已获得Azure AD应用程序注册面板中Power BI API的所有权限。

var clientCred = new ClientCredential(clientId, clientSecret);

方案1工作正常,但方案2我收到了未经授权的错误。我试图检查是否有任何方法通过power bi门户网站向主板访问仪表板,但找不到任何方法。 我更喜欢使用服务主体,但可以使用服务主体吗?

1 个答案:

答案 0 :(得分:0)

目前,Power BI不支持服务主体/应用程序令牌。