Azure使用ASP.NET Identity和JWT令牌进行身份验证

时间:2018-02-10 04:18:01

标签: c# azure asp.net-identity jwt azure-functions

我正在开发一个新的开发堆栈,我计划使用Azure functions无服务器。

我在想我的应用程序应使用ASP.NET Identity来存储用户凭据和其他详细信息。他应该使用JWT tokens在Identity DB中进行身份验证。

我试图了解一些可能有助于了解如何在Azure功能中实现ASP.NET身份的示例。有人能指出我正确的方向吗?

2 个答案:

答案 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上的一些示例代码。

希望这对您有帮助...!