可以使用 Power Bi 和 Power Apps 中经过 AAD 身份验证的 Azure 函数吗?

Possible to consume AAD authenticated Azure functions from Power Bi and Power Apps?

在 Power Bi 中,我们在尝试建立网络连接时遇到此错误:

"We couldn't authenticate with the credentials provided. Please try again"

Azure 函数应用已在我们的 AAD 中注册。该函数是一个 C# httptrigger,代码如下:

using System.Net;
using System.Net.Http;
using System.Security.Claims;
using System.Threading.Tasks;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
// parse query parameter
ClaimsIdentity userClaimsId = ClaimsPrincipal.Current.Identity as ClaimsIdentity;
    var claims = userClaimsId.FindAll(ClaimTypes.Upn);
    var groups = userClaimsId.Claims.Where(x => x.Type.Equals("groups")).ToList();
    var upns = userClaimsId.Claims.ToList();
    var roles = userClaimsId.Claims.Where(x => x.Type.Equals("upn")).ToList();
    return  req.CreateResponse(HttpStatusCode.OK, groups);
}

我们正在尝试使用同一 AAD 中的组织帐户通过“获取数据”>“Web”选项从 Power Bi Desktop 进行连接。当我们从浏览器调用该函数时,它会提示登录并且似乎 return 数据。

当您使用组织帐户登录时,Power BI Desktop 从 AAD 获取的令牌用于 https://yourfunction.azurewebsites.net audience. But when you configure AAD authentication for your Azure Function App, by default the audience configured is https://yourfunction.azurewebsites.net/.auth/login/aad/callback。这就是为什么您收到访问被拒绝的原因。

因此,您可以转到 Azure Function App 的 AAD 身份验证设置,单击 AAD > 高级 > 并在那里输入新的允许令牌受众(见下文,以红色标记)。确保单击“确定”并保存更改。