Azure http触发功能应用程序未随启动一起提供。我想实现一种Azure AD身份验证,该身份验证添加了 Microsoft.AspNetCore.Builder 的 UseAuthentication 方法来验证令牌以验证用户身份。
当前Http触发器直接点击Run方法。应该有一些中间件逻辑来添加服务和配置
启动课程
public void ConfigureServices(IServiceCollection services)
{ services.AddAuthentication(AzureADDefaults.BearerAuthenticationScheme)
.AddAzureADBearer(options => Configuration.Bind("ConfigName", options));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory logger)
{
app.UseAuthentication();
}
Authorize属性下方的实现后的实现应验证令牌并允许/拒绝用户访问。
public static class Function1
{
[Authorize]
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
return (ActionResult)new OkObjectResult($"Hello");
}
}
请帮助。
答案 0 :(得分:0)
Azure函数默认情况下没有Startup
类。您可以使用IWebJobStartup
添加服务,但不能添加自定义中间件。
答案 1 :(得分:0)
您可以[assembly: WebJobsStartup(typeof(MyNamespace.Startup))]
注册和配置依赖项注入绑定。请参阅此article。
[assembly: WebJobsStartup(typeof(MyNamespace.MyStartup))]
namespace MyNamespace
{
public static class Function1
{
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
return (ActionResult)new OkObjectResult($"Hello");
}
}
public class MyStartup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder)
{
builder.Services...
}
}
}