Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kommandoradsverktyget dotnet user-jwts kan skapa och hantera appspecifika lokala JSON-webbtoken (JWT).
Den här artikeln innehåller syntaxinformation för kommandon och exempel.
Sammanfattning
dotnet user-jwts [<PROJECT>] [command]
dotnet user-jwts [command] -h|--help
Description
Skapar och hanterar projektspecifika lokala JSON-webbtoken.
Arguments
PROJECT | SOLUTION
MSBuild-projektet som du vill använda ett kommando på. Om ett projekt inte har angetts söker MSBuild i den aktuella arbetskatalogen efter en fil som har ett filnamnstillägg som slutar med proj. Den använder sedan filen för att hämta projektinformationen för kommandot.
Commands
| Befallning | Description |
|---|---|
clear |
Ta bort alla utfärdade JWT:er för ett projekt. |
create |
Utfärda en ny JSON-webbtoken. |
remove |
Ta bort en viss JWT. |
key |
Visa eller återställ signeringsnyckeln som används för att utfärda JWTs. |
list |
Visa en lista över JWT:er som utfärdats för projektet. |
print |
Visa information om en viss JWT. |
Alternativ för kommandot create
Användning: dotnet user-jwts create [options]
| Option | Description |
|---|---|
-p \| --project |
Sökvägen till projektet som ska köras. Standardvärdet för projektet är i den aktuella katalogen. |
--scheme |
Det schemanamn som ska användas för den genererade token. Standardinställningen är Bearer. |
-n \| --name |
Namnet på den användare som JWT ska skapas för. Standardvärdet är användaren i den aktuella miljön. |
--audience |
Målgrupperna för att skapa JWT. Använder som standard de URL:er som har konfigurerats i projektets launchSettings.json-fil. |
--issuer |
Utfärdaren av JWT. Standardinställningen är dotnet-user-jwts. |
--scope |
Ett omfångsanspråk som ska läggas till i JWT. Ange en gång för varje omfång. |
--role |
Ett rollanspråk som ska läggas till i JWT. Ange en gång per roll. |
--claim |
Anspråk att lägga till i JWT. Ange detta en gång för varje påstående i formatet name=value. |
--not-before |
UTC-datum och tid då JWT blir giltig i formatet yyyy-MM-dd [[HH:mm[[:ss]]]]. Standardvärdet är det datum och den tid då JWT skapas. |
--expires-on |
UTC-datum och tid då JWT upphör att gälla, i formatet yyyy-MM-dd [[[ [HH:mm]]:ss]]. Standardvärdet är sex månader efter --not-before datumet. Använd inte det här alternativet med alternativet --valid-for . |
--valid-for |
Hur lång tid JWT förblir giltig. När tiden har nåtts upphör JWT att gälla. Ange ett tal följt av varaktighetstypen (d dagar, h timmar, m minuter, s sekunder), till exempel 365d. Använd inte det här alternativet med alternativet --expires-on . |
-o \| --output |
Det format som ska användas för att visa utdata från kommandot: default, token, eller json. |
-h \| --help |
Visa hjälpinformation för kommandot. |
Examples
Kör följande kommandon för att skapa ett tomt webbprojekt och lägg till NuGet-paketet Microsoft.AspNetCore.Authentication.JwtBearer :
dotnet new web -o MyJWT
cd MyJWT
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
Ersätt innehållet i Program.cs-filen med följande kod:
using System.Security.Claims;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthorization();
builder.Services.AddAuthentication("Bearer").AddJwtBearer();
var app = builder.Build();
app.UseAuthorization();
app.MapGet("/", () => "Hello, World!");
app.MapGet("/secret", (ClaimsPrincipal user) => $"Hello {user.Identity?.Name}. My secret")
.RequireAuthorization();
app.Run();
I föregående kod returnerar en GET-begäran till /secret slutpunkten ett 401 Unauthorized fel. En produktionsapp kan hämta JWT från en säkerhetstokentjänst, kanske som svar på inloggning med autentiseringsuppgifter. När du använder API:et under lokal utveckling dotnet user-jwts kan kommandoradsverktyget användas för att skapa och hantera appspecifika lokala JWT:er.
Verktyget user-jwts liknar verktyget användarhemligheter . Den kan användas för att hantera värden för appen som endast är giltiga för utvecklaren på den lokala datorn. I själva verket använder verktyget user-jwts infrastrukturen user-secrets för att hantera nyckeln som JWT:erna signeras med. Den här metoden säkerställer att nyckeln lagras på ett säkert sätt i användarprofilen.
Verktyget user-jwts döljer implementeringsinformation, till exempel var och hur värdena lagras. Verktyget kan användas utan att känna till implementeringsinformationen.
Värdena lagras i en JSON-fil i den lokala datorns användarprofilmapp:
Windows: %APPDATA%\Microsoft\UserSecrets<secrets_GUID>\user-jwts.json
Linux/macOS: ~/.microsoft/usersecrets/<secrets_GUID>/user-jwts.json
Skapa en JWT
Följande kommando skapar en lokal JWT:
dotnet user-jwts create
Föregående kommando skapar en JWT och uppdaterar projektfilen appsettings.Development.json med JSON som liknar följande exempel:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"Authentication": {
"Schemes": {
"Bearer": {
"ValidAudiences": [
"http://localhost:8401",
"https://localhost:44308",
"http://localhost:5182",
"https://localhost:7076"
],
"ValidIssuer": "dotnet-user-jwts"
}
}
}
}
Kopiera JWT och ID som skapades i föregående kommando. Använd ett verktyg som Curl för att testa /secret slutpunkten, där {token} är den tidigare genererade JWT:en:
curl -i -H "Authorization: Bearer {token}" https://localhost:{port}/secret
Visa JWT-säkerhetsinformation
Följande kommando visar JWT-säkerhetsinformationen, inklusive förfallodatum, omfång, roller, tokenhuvud och nyttolast samt den kompakta token:
dotnet user-jwts print {ID} --show-all
Skapa en token för en specifik användare och omfång
Följande kommando skapar en JWT för en användare med namnet MyTestUser. Information om de alternativ som stöds create finns i avsnittet Alternativ för kommandot create.
dotnet user-jwts create --name MyTestUser --scope "myapi:secrets"
Föregående kommando har utdata som liknar följande exempel:
New JWT saved with ID '43e0b748'.
Name: MyTestUser
Scopes: myapi:secrets
Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.{Remaining token deleted}
Föregående token kan användas för att testa /secret2 slutpunkten i följande kod:
using System.Security.Claims;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddAuthorization();
builder.Services.AddAuthentication("Bearer").AddJwtBearer();
var app = builder.Build();
app.MapGet("/", () => "Hello, World!");
app.MapGet("/secret", (ClaimsPrincipal user) => $"Hello {user.Identity?.Name}. My secret")
.RequireAuthorization();
app.MapGet("/secret2", () => "This is a different secret!")
.RequireAuthorization(p => p.RequireClaim("scope", "myapi:secrets"));
app.Run();
Relaterat innehåll
ASP.NET Core