ASP .NET Core Identity默认身份验证与JWT身份验证

And*_*w K 11 authentication jwt asp.net-identity asp.net-core asp.net-core-webapi

我正在开发ASP NET Core Web API,我对选择身份验证方法感到困惑.我曾经应用默认的Asp Net Identity身份验证,但最近我知道JWT.所以我几乎像在本文中所做的那样实现了身份验证:https://stormpath.com/blog/token-authentication-asp-net-core.但我无法理解这个JWT的好处.使用简单的Asp Net身份验证,我不关心令牌存储等.我只需要使用signInManager登录并使用授权方法直到注销.使用JWT,我需要考虑令牌存储,到期和其他困难.那么,这个JWT的好处是什么?如何在登录后存储此JWT令牌?此外,我应该使用这个JWT吗?就我而言,我需要对简单的WebApi进行简单的身份验证,这将由一个或多一点的用户使用.我也听说过OpenIddict,Auth0,IdentityServer,那么所有这些认证机制之间的区别是什么?

Ant*_*hik 11

这是我理解这一点的方式,分为3个逻辑部分.

  1. 身份验证服务器 - 这将验证并发出JWT toke,当API需要验证令牌时,它会将令牌发送到此服务器以验证它.
  2. 客户端 - 这可以为您的网页提供服务,也可以为您提供应用程序.这是需要请求和存储JWT令牌的内容.每次请求数据时,客户端都需要将令牌传递给api.
  3. API - 这是提供信息的原因,需要使用Authentication Server验证令牌.

那么,这个JWT的好处是什么?

JWT发布给客户端并存储在客户端.让JWT允许多个客户端(应用程序或网站)使用相同的身份验证服务器,该服务器分发JWT并说明客户端可以使用哪些API以及如何使用.

如何在登录后存储此JWT令牌?

我只试图将它存储在一个Ionic 2应用程序中,该应用程序使用带有存储模块的角度2.但我很确定很多人已经这样做了,并问了这个问题:

ASP.NET Core 1.0 Web API中的简单JWT身份验证

ASP.NET核心中基于令牌的身份验证(刷新)

此外,我应该使用这个JWT吗?就我而言,我需要对简单的WebApi进行简单的身份验证,这将由一个或多一点的用户使用.

整个关注点分离的原因是性能,因此您不需要它,因为它只是一个或多个用户.这样做是因为它是一种学习经验,JWT从一开始就不容易设置并且需要你做很多阅读而你会失败并且你会感到沮丧但最后你会知道如何设置它以及如何设置它有用

我也听说过OpenIddict,Auth0,IdentityServer,那么所有这些认证机制之间的区别是什么?

所以你在Stormpath教程中所做的并不是生产就绪.这只是一个小小的演示,可以帮助您了解JWT是什么以及它是如何工作的.上面提到的是完整的库,可以解决所有繁重的工作,并且不需要你从头开始构建整个东西.它们之间的主要区别在于它们涵盖的范围.

我个人使用IS4,它让我哭了不超过2次(它比我想象的更简单):http: //identityserver4.readthedocs.io/en/release/

https://github.com/openiddict/openiddict-core

https://auth0.com/docs/quickstart/webapp/aspnet-core/00-intro


小智 6

如果您的API有多个应用程序或服务(Web,移动,其他服务)连接,请使用令牌(JWT).优点:无状态,可伸缩性,无cookie,无CORS问题(如果允许).

如果您的API仅由一个Web应用程序使用,请使用默认的ASP默认身份验证系统.它更容易设置.