Phoesion.DevJwt.CLI 0.1.9

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global Phoesion.DevJwt.CLI --version 0.1.9                
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local Phoesion.DevJwt.CLI --version 0.1.9                
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Phoesion.DevJwt.CLI&version=0.1.9                
nuke :add-package Phoesion.DevJwt.CLI --version 0.1.9                

Phoesion.DevJwt

Library and dotnet-tool for developing and testing web api services with JWT authorization. Create custom tokens that can be used localy, without an external authority.

How to use in your service

  1. Add the Phoesion.DevJwt NuGet package to your web API project
dotnet add package Phoesion.DevJwt
  1. Enable dev-jwt on your JWT authorization services using the UseDevJwt() extension
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(o => o.UseDevJwt(builder.Environment));
  1. Configure in appsetting.Development.json
"Authentication": {
   "Schemes": {
      "Bearer": {
         "ValidAudience": "myApi",
         "ValidIssuer": "phoesion.devjwt"
      }
   }
}

Generate a jwt

  1. Install the dotnet tool
dotnet tool install --global phoesion.devjwt.cli
  1. Generate token using
dotnet devjwt create myApi --email user@mail.com --sub 42

console screenshot You can now use the token for your requests.

General Information

The UseDevJwt() extension configures an ISecurityTokenValidator that validates the token. Using the HostingEnvironment, it checks that the handler is only added for Development and Testing environments.

Samples

The repository contains the following samples projects in the Samples folder :

  • SampleWebApi : an ASP.Net core web api application
  • SampleGlowMicroservice : a Phoesion Glow microservice
  • TokenGeneratorSample : a console application that demononstrates how to generate token programmatically

Custom signing key

By default, the generator and validator use a predefined key for signing/veryfing the token. This way it will pass validation and you don't need to care about where/how the token was generated (doesn't use UserSecrets store), which is fine since it's for local development and testing.

You can however generate/validate tokens using a custom key like so :

  • In the tool specify a key to be used for signing the token using the --signkey parameter :
dotnet devjwt create myApi --email user@mail.com --sub 42 --signkey thiskeyisverylargetobreak
  • In the service authentication setup, provide the key to the UseDevJwt() function
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(o => o.UseDevJwt(builder.Environment, "thiskeyisverylargetobreak"));

General tokens programmatically

You can generate tokens programmatically using the TokenGenerator :

string userId = new Guid().ToString();
string email = "john.doe@example.com";
string audience = "myApi";

var token = TokenGenerator.Create(audience, email, userId)
                          .AddScope("openid", "profile")
                          .AddRole("admin")
                          .AddClaim("username", "johndoe")
                          .ExpiresIn(TimeSpan.FromDays(365))
                          .Build();
Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last updated
1.0.1 415 11/24/2023
0.2.1 264 4/27/2023
0.2.0 193 4/27/2023
0.1.9 194 4/27/2023
0.1.8 169 4/27/2023
0.1.7 202 4/26/2023
0.1.6 190 4/26/2023
0.1.5 189 4/26/2023
0.1.4 204 4/26/2023
0.1.3 221 4/26/2023
0.1.2 205 4/25/2023