获取调用Azure函数时使用的函数键(名称)

获取调用Azure函数时使用的函数键(名称),azure,azure-functions,Azure,Azure Functions,我需要能够识别头(x-functions-key)中提供的密钥(理想的密钥名称),以便在Run方法中发布到Azure函数,例如 Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log, ClaimsPrincipal principal) 能够在Azure门户面板中添加功能键来保护对Azure功能的访问是很好的,但我必须能够知道使用了哪个功能

我需要能够识别头(x-functions-key)中提供的密钥(理想的密钥名称),以便在Run方法中发布到Azure函数,例如

Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log, ClaimsPrincipal principal)

能够在Azure门户面板中添加功能键来保护对Azure功能的访问是很好的,但我必须能够知道使用了哪个功能键。理想情况下,可以将每个函数键上的声明关联起来,但只要我至少能弄清楚使用了哪个键,我就会很高兴。

Sajeetharan回答了如何使用REST API获取键的问题

关于使用RBAC的能力,您需要使用托管标识,您可以找到有关如何设置它的更多信息:

只需从req.HttpContext.User.Claims对象获取声明“”。它包含使用功能键时的键id

工作起来就像一个符咒,不需要外部查找

const string KEY_CLAIM = "http://schemas.microsoft.com/2017/07/functions/claims/keyid";
public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    var claim = req.HttpContext.User.Claims.FirstOrDefault(c => c.Type == KEY_CLAIM);
    if (claim == null) 
    {
        log.LogError("Something went SUPER wrong");
        throw new UnauthorizedAccessException();
    }
    else
    {
        log.LogInformation( "Processing call from {callSource}", claim.Value);
    }
const字符串键\u声明=”http://schemas.microsoft.com/2017/07/functions/claims/keyid";
公共静态异步任务运行(HttpRequest请求,ILogger日志)
{
var claim=req.HttpContext.User.Claims.FirstOrDefault(c=>c.Type==KEY\u claim);
如果(索赔==null)
{
LogError(“出了大问题”);
抛出新的UnauthorizedAccessException();
}
其他的
{
log.LogInformation(“正在处理来自{callSource}的调用”,claim.Value);
}

POST{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/functions/{functionName}/listsecrets?api version=2016-08-01My azure函数使用AuthorizationLevel。这意味着必须在标题中提供与下面azure门户面板中设置的功能键之一匹配的功能键“管理"。这是控制对azure函数的访问的一种很好的方法,但我需要在运行时验证提供的密钥属于哪个供应商。我没有发现任何方法来查看使用了哪个密钥。令人惊讶的是,ClaimsPrincipal主体中没有标识。我不必获取密钥名称,而可以始终直接从标头获取密钥om标题:Microsoft.Extensions.Primitives.StringValues;bool result=req.Headers.TryGetValue(“x-functions-key”,out-values);这不太理想,但是一个基于键识别访问的简单解决方案。这仍然是最新的吗?-我的意思是
http://schemas.microsoft.com/2017/07/functions/claims/keyid