Identity with Web API

It is an API that manages users, passwords, profile data, roles, tokens, email confirmation, external logins etc.

It is by default built on top of EntityFrameworkCore; you can also create custom data stores.

Register Endpoint

Register UI

Login Endpoint

Login UI

Introduction to JWT

A JSON Web Token (JWT) is a compact and self-contained object for securely transmitting information between parties as a JSON object.

Contents of JWT

1. Header (base 64 string)

Defines the type of token and the signing algorithm used.

Eg: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9

2. Payload (base 64 string)

Contains user claims (user details such as name, email or user type).

Eg: { “userId”: “b08f86af-35da-48f2-8fab-cef3904660bd”}

Eg: eyJ1c2VySWQiOiJiMDhmOZhZi0zNWRhLTQ4ZjItOOTA0NjYwYmQifQ

3. Signature (base 64 string)

It is used to verify to ensure that the message wasn’t changed along the way.

It is usually signed by using a secret key (HMAC algorithm).

  • xN_h82PHVTA9vdoHrcZxH-x5

JWT Algorithm

Inputs:

{

“typ”: “JWT”,

“alg”: “HS256”

}

payload

{

“userId”: “b08f86af-35da-48f2-8fab-cef3904660bd”

}

secret

MySecret

Algorithm:

data = base64Encode( header ) + "." + base64Encode( payload )

hashedData = hash( data, secret )

signature = base64encode( hashedData )

jwtToken = data + ”.” + signature

Example JWT token:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM

Refresh Tokens - JWT

A refresh token is a token (base-64 string of a random number) that is used to obtain a new JWT token every time, when it is expired.