【问题标题】:ASP.Net Core - Web API to get accessed via PowerBI and Azure ADASP.Net Core - 通过 PowerBI 和 Azure AD 访问的 Web API
【发布时间】:2021-06-26 15:23:07
【问题描述】:

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

在后端,我正在按照 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# azure asp.net-core powerbi


【解决方案1】:

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

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

【讨论】:

  • 嗯,谢谢您的反馈,但我没有获得访问令牌,不是吗?这是一个 OAuth2 Authentication Code 流程,由后端 AppID/Secret 设置?该链接对身份验证没有多说,但是如果需要手动设置标头,那真的很奇怪?
  • 如果没有访问令牌,您将无法调用经过 AD 身份验证的 API。有一个选项 MSI,但这仅适用于 Azure 资源。此外,以上链接仅用于测试目的。你不是在测试流程吗?如果我错了,请纠正我
  • 嗯,我的最终目标是使用 Azure AD 和适当的流程来保护 API,以便用户被重定向到 Azure AD 登录并可以使用接受的 Azure AD 登录。我猜这是身份验证代码(因为我的后端可以安全地存储一个秘密)。我已经将快速入门指南用于响应场景(网络应用程序),它适用于网络,因为用户被重定向到 Azure AD登录并返回我的应用程序,但不适用于 PowerBI。
  • 对不起,我误解了问题。请查看:powerbi.microsoft.com/fr-fr/blog/…
猜你喜欢
  • 2023-01-19
  • 2020-07-27
  • 2020-09-10
  • 1970-01-01
  • 2020-12-21
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多