我有一个Azure Function 2.x(Asp.net Core),并且正在使用Azure AD进行身份验证。我正在尝试在身份验证后访问登录用户的声明。以前使用Azure Functions 1.x,我们将使用 ClaimsPrincipal.Current 获得索赔,如以下代码所示:
using System.Net;
using System.Collections.Generic;
using System.Security.Claims;
using Microsoft.IdentityModel.Clients.ActiveDirectory;
public static HttpResponseMessage Run(HttpRequestMessage req, out object document, TraceWriter log)
{
string name = ClaimsPrincipal.Current.FindFirst("name").Value;
log.Info($"name is {name}");
return req.CreateResponse(HttpStatusCode.OK, "Done");
}
有关如何使用.Net Core访问Azure Functions 2.x中的声明的任何指南?
答案 0 :(得分:4)
此功能在Azure Functions 2.0的C#中为now supported。现在,您可以将ClaimsPrincipal
作为参数添加到HttpTrigger
函数的签名中,或者可以通过HttpRequest
在req.HttpContext.User
对象上对其进行访问。
对JavaScript的支持应该很快就会出现,最终所有语言都应该支持此功能。
答案 1 :(得分:0)
让我在这里发布一个代码示例,看看ClaimsPrincipal
参数在哪里:
[FunctionName("MyFunctionName")]
public static HttpResponseMessage Run(
[HttpTrigger(
AuthorizationLevel.Anonymous,
"get", "post",
Route = "MyFunctionName")]HttpRequestMessage req,
ILogger log,
ClaimsPrincipal claimsPrincipal)
{
// My function code here...
}