我一直在寻找azure函数自定义身份验证的方法。我可以看到许多现成的身份验证,包括功能键,AD身份验证和其他身份提供程序。我的方案是仅对使用自定义用户名和密码(已存储在数据库中)登录到Web应用程序中的用户验证azure功能。有没有现成的实现方案?任何帮助将不胜感激
答案 0 :(得分:0)
我遇到了类似的问题,因为我想使用外部OAuth服务器发出的JWT访问令牌对请求进行身份验证。没有方便的中间件可以让您执行此操作,但是您可以创建一个custom input binding来将ClaimsPrincipal之类的内容注入到函数定义中,例如
[FunctionName("ExampleHttpFunction")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "example")] HttpRequest req,
ILogger log,
[AccessToken] ClaimsPrincipal principal)
{
log.LogInformation($"Request received for {principal.Identity.Name}.");
return new OkResult();
}
这会将身份验证与函数本身分开,从而使测试更加容易,尽管您仍然需要添加授权检查并显式返回40倍状态代码。
绑定SDK的文档不够完善,您需要将六个不同的类组合在一起才能使它起作用,但是我在这里写了详细信息:Custom token authentication in Azure Functions using bindings。代码本身发布在GitHub上–只需用您自己的身份验证方法替换IValueProvider实现中的代码即可。
我希望这会有所帮助。我猜,替代方法是编写一些添加到每个函数中的样板代码?