【问题标题】:How to get AccessToken and claims in azure function如何在 Azure 函数中获取 AccessToken 和声明
【发布时间】:2020-08-11 10:17:49
【问题描述】:

我正在尝试从请求中获取 access_token 和它的声明到 azure 函数。

不记名令牌已在标头中设置,但我无法获得使用该函数的 FunctionsStartup 的声明。

是否可以在 azure 函数中获取声明?如果是,请有人可以提供一个例子吗?

我整天都在尝试,也找到了但我找不到一个明确的例子。

提前致谢!

编辑:

当我在函数的 FunctionsStartup 中添加 Authorization 时出现下一个错误。 builder.Services.AddAuthorization()

我已经配置了 JwtBearer 的认证: services.AddAuthentication("Bearer").AddJwtBearer((Action)

【问题讨论】:

    标签: azure jwt azure-functions bearer-token


    【解决方案1】:

    我在从我的 Azure 函数中获取声明时也遇到了一些问题。我最终从 HttpRequestMessage 对象本身获取它们,如下所示:

    var principal = req.GetRequestContext().Principal as ClaimsPrincipal;
    var roles = principal.Claims.Where(e => e.Type == "roles").Select(e => e.Value);            log.Info(string.Join(",", roles));
    

    请注意我使用的是 Microsoft.NET.Sdk.Functions 版本 1.0.37,不确定这是否适用于您的场景,但您可以尝试一下。

    Microsoft 已声明不应使用 ClaimsPrincipal.Current,因此该选项可能对您不起作用https://docs.microsoft.com/en-us/aspnet/core/migration/claimsprincipal-current?view=aspnetcore-2.1

    【讨论】:

      【解决方案2】:

      您可以通过使用 Azure 函数的声明原则绑定来做到这一点。

      using System.Net;
      using Microsoft.AspNetCore.Mvc;
      using System.Security.Claims;
      
      public static IActionResult Run(HttpRequest req, ClaimsPrincipal principal, ILogger log)
      {
           // ...
           return new OkResult();
      }
      

      见:http://sadomovalex.blogspot.com/2018/12/get-current-users-principal-in-azure.html

      【讨论】:

      • 当我添加 claimPrincipal 这是我得到的唯一值:{schemas.microsoft.com/2017/07/functions/claims/authlevel: Admin} 知道为什么我可以获得用户声明¿?在我的 api 休息中,我可以获得价值
      • 你可以试试 ClaimsPrincipal.Current.Identity.Name
      • claimsPrincipal.Identity.Name 设置为空
      猜你喜欢
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 1970-01-01
      • 2020-03-21
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多