Azure功能自定义身份验证

时间:2019-02-08 13:30:52

标签: azure azure-web-sites azure-functions

我一直在寻找azure函数自定义身份验证的方法。我可以看到许多现成的身份验证,包括功能键,AD身份验证和其他身份提供程序。我的方案是仅对使用自定义用户名和密码(已存储在数据库中)登录到Web应用程序中的用户验证azure功能。有没有现成的实现方案?任何帮助将不胜感激

1 个答案:

答案 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实现中的代码即可。

我希望这会有所帮助。我猜,替代方法是编写一些添加到每个函数中的样板代码?