【发布时间】:2019-08-09 02:28:57
【问题描述】:
我在 C# 中有一个非常简单的 Azure 函数,为此我设置了 Azure AD Auth。我刚刚使用 Express 设置在 Function 配置中创建了一个 App 注册。
public static class IsAuthenticated
{
[FunctionName("IsAuthenticated")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "options", Route = null)]
HttpRequest req,
ILogger log)
{
return new OkObjectResult("You are " + req.HttpContext.User.Identity.Name);
}
}
当我在浏览器中访问该功能时,一切都按预期工作(如果未登录,我必须登录并重定向到我的 API)。但是,如果我尝试在需要不记名令牌的任何地方访问我的函数,我会收到 401 Unauthorized 错误。更奇怪的是,我也无法在 Azure 门户中执行该功能。
但是令牌被毫无问题地获取并添加到请求中:
我尝试了几种不同的方法来解决这个问题。首先,我认为这可能是 CORS 问题(因为我也遇到过其中一些问题),只是将 CORS 设置为接受 *,但没有任何改变。
然后我将我的 API 登录端点添加到重定向并尝试将隐式授权设置为也接受访问令牌,但它仍然无法正常工作。
有什么我忽略的吗?应用注册快速配置不应该只适用于 azure 函数吗?
编辑:
按照@thomas-schreiter 的建议将指向我的函数应用程序的 URL 放入重定向中并没有改变任何东西(我已经尝试了屏幕截图中的配置,并且只是将这些值中的每一个都放在了它自己的位置上)。
编辑 2:
我现在也尝试以手动方式 with Postman 获取 Bearer 令牌,但在调用我的 API 时仍然遇到 401。
【问题讨论】:
-
你使用哪个客户端来获取和调用azure函数?
-
我真正的客户端应用程序是一个带有 @azure/msal-angular 的 Angular 应用程序,但我得到的错误与我只是在 Azure 门户中执行该函数一样(我在截图)。我实际上得到了一个 Bearer 令牌并将其添加到请求中,但随后我得到了 401 Unauthorized 错误
-
我遇到了这个问题,因为我在查询字符串中提供的代码有问题,遇到这个问题的人可以先检查一下。
标签: c# azure azure-active-directory azure-functions