首页 > 解决方案 > ASP.Net Core - 通过 PowerBI 和 Azure AD 访问的 Web API

问题描述

我正在创建一个带有一些 API 的自定义 ASP.Net Corw 3.1 Web 应用程序,其中一个应该可以从 PowerBI 访问。由于 PowerBI 应该通过组织帐户使用,我想配置everyting,以便用户可以使用该帐户。

在后端,我正在按照 Microsoft 文档中的定义设置 OpenIDConnect

services
    .AddAuthentication("BasicAuthentication")
    .AddScheme<AuthenticationSchemeOptions, BasicAuthenticationHandler>("BasicAuthentication", null)
    .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));

我相应地保护控制器:

[Authorize(AuthenticationSchemes = OpenIdConnectDefaults.AuthenticationScheme)]
[ApiController]
[Route("api/[controller]")]
[ApiExplorerSettings(IgnoreApi = true)]
public class SomeCOntroller : ControllerBase

在 Azure 应用注册中,我还在 Azure Active Directory 中定义了应用: 在此处输入图像描述

当我现在通过浏览器导航到 REST API 时,我会相应地重定向到组织登录名,并且可以使用我的帐户,然后导航回 API。

但 PowerBI 坚持认为,不支持身份验证类型: ![在此处输入图像描述

检查 Azure 上的登录,我没有看到来自 PowerBI 的任何请求,只有来自 Web 的请求。我是在做一些根本错误的事情,还是 PowerBI 需要一些特定的逻辑?不幸的是,PowerBI 的错误表单在该主题上没有遇到任何问题,并且由于通过 Web 进行访问,我猜设置也是正确的吗?

标签: c#azureasp.net-corepowerbi

解决方案


Web API 的身份验证设置似乎是正确的。但是,测试部分看起来不正确,因为您没有在标头中传递访问令牌。查看使用 Power BI 调用 REST API 和解析 JSON,以获取有关如何从 Power BI 调用 REST API 的教程。

如果您遇到任何问题,请告诉我。


推荐阅读