gpt4 book ai didi

azure - 连接到 Power BI API 时收到 'Forbidden (403)'

转载 作者:行者123 更新时间:2023-12-02 06:20:48 25 4
gpt4 key购买 nike

我们一直在努力关注this Power BI article这样我们就可以将报告/仪表板嵌入到我们的 SaaS 产品中。具体来说,我们陷入了第 3 步“创建嵌入 token ”。

我们能够很好地获取不记名 token ,但是当检索报告的请求最终提交给我们收到的 API 时:操作返回了无效的状态代码“禁止”

    private static string clientId = "...";
private static string secretKey = "...";
private static string groupId = "...";

static void Main(string[] args)
{
string resourceUri = "https://analysis.windows.net/powerbi/api";
string authorityUri = "https://login.windows.net/common/oauth2/authorize";

ClientCredential credential = new ClientCredential(clientId, secretKey);
AuthenticationContext authContext = new AuthenticationContext(authorityUri);

var token = authContext.AcquireTokenAsync(resourceUri, credential).Result.AccessToken;

var tokenCredentials = new TokenCredentials(token, "Bearer");

using (var client = new PowerBIClient(new Uri("https://api.powerbi.com/"), tokenCredentials))
{
var reports = client.Reports.GetReportsInGroupWithHttpMessagesAsync(groupId);

// !!! - Here's where the exception is thrown
// !!! -- Operation returned an invalid status code 'Forbidden'
var report = reports.Result.Body;
}
}

这是我们尝试过的:

  • 所需的权限已授予(我们已检查所有权限以确保没有遗漏任何内容)。这包括 Windows Azure Active Directory/Power BI 服务。
  • 我们已确认客户端 ID、 key 和组 ID 正确。
  • Power BI 工作空间是私有(private)的,但我们已尝试将其设为公共(public)工作空间,以确保这不会产生影响。
  • 最后,我们通过代码收到的 token 与 powerbi.com 上的 token 相匹配。

最佳答案

您正在使用客户端凭据流来获取 Power BI API 的 token 。目前,Power BI REST API 仅支持委派权限,但不支持任何应用程序权限。因此您的访问 token 无法获得足够的访问权限。要使用 Power BI,身份验证需要基于特定用户。相关主题herehere供您引用。

根据您的document ,该场景是应用程序拥有对数据的访问权限。用户不一定是 Power BI 用户,应用程序控制最终用户的身份验证和访问。然后就可以使用资源所有者流程来获取token了。

A sample of this is available within Controllers\HomeController.cs of the App Owns Data sample.

从代码示例中,它使用用户密码凭据(而不是应用程序的凭据)获取 token :

            // Create a user password cradentials.
var credential = new UserPasswordCredential(Username, Password);

// Authenticate using created credentials
var authenticationContext = new AuthenticationContext(AuthorityUrl);
var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ClientId, credential);

请引用Authenticate users and get an Azure AD access token for your Power BI app并检查 Access token for non-Power BI users (app owns data)部分。

关于azure - 连接到 Power BI API 时收到 'Forbidden (403)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46103421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com