Azure函数身份验证与ASP.NET Identity和JWT令牌。

3
我正在采用新的开发堆栈,计划使用Azure functions进行无服务器开发。
我认为我的应用程序应该使用ASP.NET Identity来存储用户凭据和其他详细信息,并且应该通过JWT tokens在Identity数据库中进行身份验证。
我试图找到一些示例,以了解如何在Azure functions中实现ASP.NET Identity。有人能指点我正确的方向吗?

为什么你不使用Azure AD? - Hussein Salman
@编程客户坚持使用SQL Server数据库和ASP.NET身份验证,因为我们想利用ASP.NET身份验证的功能。您有什么提示可以帮助我实现这一点吗? - Sachin Trivedi
2个回答

2
我认为没有一种有效的方法来做到这一点。因为Azure函数在整个应用程序中并没有真正的启动或入口,你无法像通常在startup.cs或global.asax中的MVC或Web应用程序中那样插入OAuth。
因此,这必须有所不同于Web应用程序中的操作方式。
也许这可以帮到你。

https://vincentlauzon.com/2017/12/04/azure-functions-http-authorization-levels/


谢谢。我知道Azure Functions中的内置级别,正如你所提到的,我找不到插入oAuth的地方,所以我问了一个问题来确认是否可能。我想我必须手动开发该模块。 - Sachin Trivedi

0

最近我也不得不做这样的事情,即使用由第三方OAuth服务器发布的JWT访问令牌进行身份验证。没有方便的中间件可以让您这样做,因此您只能使用手动实现。

我使用的方法是创建一个自定义输入绑定器,它可以让您验证令牌并将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();
}

这至少可以将身份验证与函数定义分开,并使事情更加可测试。

您需要将半打不同的类连接起来才能使它正常工作,但我已经在这里详细介绍了:为 Azure Functions 编写自定义令牌身份验证。此外,您还可以查看GitHub上的一些示例代码。

希望这有所帮助...!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接