gpt4 book ai didi

使用 Azure AD 保护的 Azure Functions - 从 native 应用程序调用时获取 HTTP 401

转载 作者:行者123 更新时间:2023-12-03 20:53:02 26 4
gpt4 key购买 nike

我的目标是使用 Azure AD 保护我的 Azure Functions 并从 WPF 应用程序调用它们。

我有一个具有以下定义的 Azure 函数:

public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]
HttpRequest req,
ILogger log,
ExecutionContext context,
ClaimsPrincipal claimsPrincipal)

我注册了 Azure AD 应用程序并配置了 native 应用程序身份验证的设置:

Azure AD App Registration Settings

我在“公开 API”blad 中配置了我的应用程序 Expose an API

我还添加了 API 权限

API Permission

我在身份验证/授权边栏选项卡的 Azure Functions 应用程序中关联了我的应用程序。

Azure Functions Authorization Settings

我在 WPF 应用程序中从 Azure AD 获取 token (使用 Microsoft.Identity.Client 库)

            string applicationID = "***"; // My AppID Guid
PublicClientApp = PublicClientApplicationBuilder.Create(applicationID)
.WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
.Build();

var listScopes = new List<string>
{
//"user.read" - Removed based on @tony-yu recommendation
$"api://{applicationID}/MyScope"
};

var authResult = await PublicClientApp.AcquireTokenInteractive(listScopes)
.ExecuteAsync();

var myToken = authResult.AccessToken;

我可以毫无问题地进行身份验证,并且成功获取 token ,但是每当我调用我的函数并在授权 header 中提供我的 token (Authorization = Bearer ****)时,我得到:

401 - 您无权查看此目录或页面。

我这样调用它( postman ):

enter image description here

这是调用返回时的 WWW-Authenticate header 内容

www-authentication

当我检查我得到的 token 时,它似乎是合法的

Token

知道我做错了什么吗?

最佳答案

范围不正确。由于您想访问受广告保护的功能,您需要使用

var listScopes = new List<string>
{
"{applicationID}/.default"
};

相反。

user.read 是 Microsoft Graph API 的权限。

关于使用 Azure AD 保护的 Azure Functions - 从 native 应用程序调用时获取 HTTP 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62077408/

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