我正在开发一个新的开发堆栈,我计划使用Azure functions无服务器。
我在想我的应用程序应使用ASP.NET Identity来存储用户凭据和其他详细信息。他应该使用JWT tokens在Identity DB中进行身份验证。
我试图了解一些可能有助于了解如何在Azure功能中实现ASP.NET身份的示例。有人能指出我正确的方向吗?
答案 0 :(得分:2)
我认为没有一种有效的方法可以做到这一点。因为azure函数在整个应用程序中没有真正的启动或入口点,你可以在其中插入oauth,这通常在startup.cs或global.asax中的mvc或web应用程序中完成。
所以这必须转移一下它在Web应用程序中的工作方式
也许这可以提供一些帮助
https://vincentlauzon.com/2017/12/04/azure-functions-http-authorization-levels/
答案 1 :(得分: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();
}
这至少将身份验证与函数定义分开,并使事情更具可测试性。
您需要将六个不同的类连接在一起才能使它起作用,但是我在这里写了详细信息:custom token authentication for Azure Functions。您还可以查看GitHub上的一些示例代码。
希望这对您有帮助...!