ASP .NET Core Identity default authentication vs JWT authentication

This is the way I understand this, split in to 3 logical parts.

  1. Authentication Server - this will authenticate and issue the JWT token, when the API need's to validate the token it will send the token to this server to validate it.
  2. Client - this is what serves your web pages, or you app perhaps. This is what will need to request and store the the JWT token. The client will need to pass the token to the api every time it requests data.
  3. API - this is what serves the information and needs to validate the token with the Authentication Server.

So, what're the benefits of this JWT?

JWT is issued to the client and stored on the client side. Having JWT allows multiple client's (App's or Websites) use the same authentication server which distributes JWT and states which API's the client's can use and how.

How can I store this JWT token after login?

I only tried to store it in an Ionic 2 app which uses angular 2 which has a storage module. But i'm pretty sure numerous people have done this already and asked this question:

Simple JWT authentication in ASP.NET Core 1.0 Web API

Token Based Authentication in ASP.NET Core (refreshed)

Update If your front end is made purely html/js/css and doesn't have a back end to accommodate it you would store your token in local storage, there a multiple npm packages that help you with this like this one. You want to look for Implicit flow.

Otherwise if you do have a back end that comes with your front end you want to store the token in a session/database your pick, there are 3rd party providers to do this like IdentityServer4. You want to use Hybrid flow

Furthermore, should I even use this JWT? In my case, I need simple authentication for simple WebApi which will be used by one or little bit more users.

The reason for the whole separation of concerns is performance so you don't really need it since it's just one or a little more users. Do it because it's a learning experience, JWT is not easy to setup from the beginning and will require you to do a lot of reading and you will fail and you will be frustrated but at the end you will know how to set it up and how it works

I've also heard about OpenIddict, Auth0, IdentityServer, so what's the difference between all of these authentication mechanisms?

So what you did in the Stormpath tutorial is NOT production ready. That is just a little demo, to help you understand what JWT is and how it works. The above mentioned are complete libraries that tackle all the heavy lifting and do not require you to built the whole thing from scratch. And the main difference between them is the scope that they cover.

I personally used IS4 and it had me crying no more than 2 times (It was simpler than I thought): http://identityserver4.readthedocs.io/en/release/

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

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


Use tokens (JWT) if you have multiple applications or services (web, mobile, other services) connection to your API. Benefits: Stateless, Scalability, No cookie, no CORS problems (if you allow it).

If your API will be used by only one web application use the default ASP default authentication system. Its easier to set up.