ASP .NET Core Identity default authentication vs JWT authentication

Andrew K

I am developing ASP NET Core Web API and I am confused by choosing the authentication method. I used to apply default Asp Net Identity authentication, but recently I've known about JWT. So I've implemented Authentication almost as it done in this article: https://stormpath.com/blog/token-authentication-asp-net-core. But I can't understand the benefits of this JWT. With simple Asp Net Identity Authentication, I don't care about token storage etc. I only need to log in with signInManager and use authorized methods until logout. With JWT I need to think about the token store, expiration, and other difficulties. So, what're the benefits of this JWT? How can I store this JWT token after login? 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. I've also heard about OpenIddict, Auth0, IdentityServer, so what's the difference between all of these authentication mechanisms?

Anton Toshik

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

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

ASP .NET CORE 2.2 JWT & Claims identity Authentication for Website

.NET Core Identity Server 4 Authentication VS Identity Authentication

ASP.NET Core Identity with Windows Authentication

Asp net Core Identity token authentication expiration

Cookie authentication not working properly with JWT authentication ASP.NET CORE

JWT Authentication for .net core 2.2 application not using Identity

asp.net Identity authentication .net core 2.1

.NET Core External Authentication without ASP.NET Identity

Firebase Authentication (JWT) with .NET Core

Azure MobileApp Custom Authentication VS Asp.Net Identity

Logout & ReturnUrl | ASP.Net Core Identity MVC | Authentication

ASP.NET Core 5.0 JWT authentication is throws 401 code

ASP.NET Core Web API Facebook JWT Authentication

ASP.NET Core JWT authentication changes Claims (sub)

ASP.NET Core JWT with Custom Authentication Type

ASP.NET Core JWT/Windows Authentication HTTP 400 Error

asp.net core 2.0 Authorization is firing before authentication (JWT)

ASP NET Core JWT authentication allows expired tokens

JWT Authentication not working in ASP.NEt core web api

JWT Authentication ASP.NET Core MVC application

Facebook JWT authentication using ASP.NET Core Web API

.Net Core 2.0 Web API using JWT - Adding Identity breaks the JWT authentication

Asp.Net Core & JWT authentication: How to know authentication failed because token expired?

ASP.Net Core 2.0 mixed authentication of JWT and Windows Authentication doesn't accept credentials

Authentication - VS 2017 15.3; ASP.Net Core 2.0; Angular

Asp.net Core Authentication

How to get Identity User from his authentication JWT token in .Net Core API?

.NET Core 3 Cookie Authentication not setting identity

Migrate ASP.NET Framework to ASP.NET Core 3.1 with JWT Bearer authentication from ADFS