将数据从Azure函数过滤器传递到函数

将数据从Azure函数过滤器传递到函数

问题描述:

我已将Bearer Token Validation委托给Azure Function Invocation Filter。它验证令牌并获得声明。现在我试图将这些索赔或ClaimsPrincipal对象转换为函数。将数据从Azure函数过滤器传递到函数

 public override Task OnExecutingAsync(
       FunctionExecutingContext executingContext, CancellationToken cancellationToken) 
    { 
      var handler = new JwtSecurityTokenHandler(); 
      handler.InboundClaimTypeMap.Clear(); 
      principal = handler.ValidateToken(jwtToken, 
        new TokenValidationParameters 
        { 
         ValidateAudience = false, 
         ValidIssuer = issuer, 
         ValidateIssuerSigningKey = false, 
         SignatureValidator = (t, param) => new 
                 JwtSecurityToken(t), 
         NameClaimType = "sub" 

        }, out var token); 
    } 

我看到一个在FunctionExecutingContext称为Properties字典。但是按照文档它用于在过滤器之间传递数据。因此executingContext.Properties["claims"] = principal;不传递数据到功能。

我们可以在WebAPI中使用RouteData来实现它,但不确定是否可以在Azure函数中使用它。任何帮助,高度赞赏。

您的选择有点有限 - 没有像Request.Properties那样通用的属性包。 您可以使用函数将Filter放在类上,然后过滤器可以在执行时设置实例字段;你的功能可以读取字段。您可能需要设置JobActivator并确保每个调用都获得一个新的类实例。

+0

谢谢。我正在使用Azure函数。类是静态的。所以我认为每次调用函数都不可能有新的类实例。 – Venky