AUTHENTICATION AND AUTHORIZATION

ACCESS THE UI OF ASP.NET CORE IDENTITY

NET CORE

An area is a logical container or rather a group of related features. In this post we will look at the functionality, or rather the user interface that Identity provides for us to register, as well as how to access the various sections of the user profile. We will discuss the User object and the SignInManager object. We will finally edit the View _LogingPartial.cshtml.

Area
Area Identity

We now set up the Layout View to have the same interface in Identity as well by creating a _ViewStart.cshtml file in the directory structure shown.

View di Layout

SET PASSWORD COMPLEXITY CRITERIA

Identity provides us with an easy way to set the password. Let’s look at it with a slide.

Password

Sometimes users choose passwords that are too predictable and easy for an attacker to guess as reported in the slide. The password however reflects the complexity criteria set.

Password prevedibile
Logica personalizzata
Startup

HASHING AND PASSWORD SECURITY

You can find the CommonPasswordValidator.cs class under the Model/Identity path. After registration in the AspNetUsers table, which you can look up, no trace of the password remains, but a hash is created that is the result of many processing 10,000 to be precise.

Password Hash

ACCESS THE USER’S PROPERTIES WITH THE USER OBJECT

At the time of registration, authentication also occurs concurrently; if I go to visit other pages on the site, Identity knows that I am the user who registered with a certain e-mail and password. In fact, if we examine the Browser tools we will see that an authentication cookie is present. So the authentication cookie is issued either after registering or after logging in. Why do we keep seeing the access and login links, though? We need to edit the View _LoginPartial.cshtml to see the user information.

Autenticazione

Let’s look at the User object.

Oggetto User

It is also available in the various controllers.

User

Also in our components thanks to dependency injection we receive User from HttpContext.

User

Suppose an HTTP request comes in, is when ASP.NET Core creates this HttpContext object, which represents this specific request. It contains information describing it such as the path, GET verb, POST verb or whatever, and why not even if it contains cookies, so this object goes through all the Middleware all the way to the Authentication Middleware. This Middleware via the authentication cookie will go to see if it is valid and if it is it will construct the identity of the user, placed within the User object which thus accompanies the entire request until a response is produced for the user.

Middleware
User

We are able to manage how many and which Claims to include within a ClaimsIdentity.

Claim
Percorsi

In an application there can be multiple authentication mechanisms, to know whether a user has authenticated with Identity we use the SignInManager<TUser>.

SignInManager

Let us now see what the View _LoginPartial.cshtml looks like.

Partial

LINK TO CODE ON GITHUB

GITHUB

Download the section17 code or the master branch or clone the GITHUB repository to have all the sections available in your favorite editor. See the README.md file to find user and password to send e-mail with mailtrap.io. You also need to find the codes to implement ReCaptcha. Below is an image from Google’s site.

Recaptcha