Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Készítette: Rick Anderson
A dotnet user-jwts parancssori eszköz alkalmazásspecifikus helyi JSON-webjogkivonatokat (JWT-ket ) hozhat létre és kezelhet.
Áttekintés
dotnet user-jwts [<PROJECT>] [command]
dotnet user-jwts [command] -h|--help
Description
Projektre specifikus helyi JSON Web Tokeneket hoz létre és kezel.
Arguments
PROJECT | SOLUTION
Az MSBuild projekt, amelyen parancsot kell alkalmazni. Ha nincs megadva projekt, az MSBuild egy olyan fájl aktuális munkakönyvtárában keres, amely proj végződésű fájlkiterjesztéssel rendelkezik, és ezt a fájlt használja.
Commands
| Command | Description |
|---|---|
| átlátszó | Egy projekt összes kiadott JWT-jának törlése. |
| létrehoz | Adjon ki egy új JSON-webjogkivonatot. |
| eltávolít | Adott JWT törlése. |
| kulcs | A JWT-k kiállításához használt aláírási kulcs megjelenítése vagy alaphelyzetbe állítása. |
| list | A projekthez kiadott JWT-k listája. |
| nyomtat | Egy adott JWT részleteinek megjelenítése. |
Hozz létre
Használat: dotnet user-jwts create [options]
| Lehetőség | Description |
|---|---|
| -p | --projekt | A projekt útvonala, amelyen működni kíván. Alapértelmezetten a projekt az aktuális könyvtárban lévő projektet veszi figyelembe. |
| --séma | A létrehozott tokenhez használandó sémanév. Alapértelmezés szerint a "Bearer". |
| -n | --név | Annak a felhasználónak a neve, aki számára létre kívánja hozni a JWT-t. Alapértelmezetten az aktuális környezet felhasználójára vonatkozik. |
| --célközönség | A JWT létrehozásához szükséges célközönségek. A projekt launchSettings.jsonkonfigurált URL-címek alapértelmezett értéke. |
| --kibocsátó | A JWT kibocsátója. Alapértelmezés szerint "dotnet-user-jwts". |
| --hatókör | Hatókör-jogcím, amely hozzáadható a JWT-hez. Adjon meg egy-egy hatókört. |
| --szerep | A JWT-hez hozzáadandó szerepkör-jogcím. Határozza meg egyszer minden szerephez. |
| --igény | A JWT-hez hozzáadni kívánt jogcímek. Adjon meg minden egyes igényhez egyszer "name=value" formátumban. |
| --nem-előtt | A JWT nem lehet érvényes a megadott UTC dátum és időpont előtt, amelynek formátuma: 'éééé-HH-nn [[HH:mm[[:ss]]]]'. A JWT létrehozásának dátumára és időpontjára vonatkozó alapértelmezett érték. |
| --lejárati-dátum | A JWT UTC-dátuma és időpontja "éé-MM-dd [[[ [HH:mm]]:ss]]]' formátumban jár le. Alapértelmezés szerint 6 hónappal a --not-before dátum után. Ne használja ezt a lehetőséget a --valid-for beállítással együtt. |
| --valid-for | Az az időszak, amely után a JWT-nek le kell járnia. Adjon meg egy számot, majd a napokra vonatkozó "d" időtartamtípust, a "h" értéket órákra, az "m"-t percekre, az "s"-t pedig másodpercekre, például 365d-et. Ne használja ezt a lehetőséget a --expires-on beállítással együtt. |
| -o | --kimenet | A parancs kimenetének megjelenítéséhez használt formátum. Lehet az egyik "alapértelmezett", "token" vagy "json". |
| -h | --segítség | Súgóinformációk megjelenítése |
Példák
Futtassa a következő parancsokat egy üres webes projekt létrehozásához és a Microsoft.AspNetCore.Authentication.JwtBearer NuGet-csomag hozzáadásához:
dotnet new web -o MyJWT
cd MyJWT
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
Cserélje le a Program.cs tartalmát a következő kódra:
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();
Az előző kódban egy GET-kérés /secret hibát ad vissza 401 Unauthorized. Egy produkciós alkalmazás esetleg egy hitelesítési jogkivonat-szolgáltatástól (STS) kapja meg a JWT-t, például bejelentkezéskor a hitelesítő adatok használatával. Az API helyi fejlesztés során történő használatához a parancssori dotnet user-jwts eszköz alkalmazásspecifikus helyi JWT-k létrehozására és kezelésére használható.
Az user-jwts eszköz koncepciója hasonló a felhasználói titkos kódok eszközéhez, és olyan értékek kezelésére használható, amelyek csak a helyi gépen lévő fejlesztő számára érvényesek. Valójában a user-jwts eszköz az infrastruktúrát használja a user-secrets JWT-k által aláírt kulcs kezelésére, biztosítva, hogy az biztonságosan legyen tárolva a felhasználói profilban.
Az user-jwts eszköz elrejti a megvalósítás részleteit, például az értékek tárolásának helyét és módját. Az eszköz a megvalósítás részleteinek ismerete nélkül is használható. Az értékek egy JSON-fájlban vannak tárolva a helyi gép felhasználói profilmappájában:
Fájlrendszer elérési útja:
%APPDATA%\Microsoft\UserSecrets\<secrets_GUID>\user-jwts.json
JWT létrehozása
A következő parancs létrehoz egy helyi JWT-t:
dotnet user-jwts create
Az előző parancs létrehoz egy JWT-t, és az alábbihoz hasonló JSON-fájllal frissíti a projekt fájlját appsettings.Development.json :
{
"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"
}
}
}
}
Másolja ki a JWT-t és az ID előző parancsban létrehozottat. Használja a Curlhez hasonló eszközt a teszteléshez /secret:
curl -i -H "Authorization: Bearer {token}" https://localhost:{port}/secret
Hol {token} található a korábban létrehozott JWT.
JWT biztonsági információk megjelenítése
Az alábbi parancs megjeleníti a JWT biztonsági adatait, beleértve a lejáratot, a hatóköröket, a szerepköröket, a jogkivonat fejlécét és hasznos adatait, valamint a kompakt jogkivonatot:
dotnet user-jwts print {ID} --show-all
Token létrehozása egy adott felhasználóhoz és hatókörhöz
A támogatott létrehozási lehetőségekről ebben a témakörben a Létrehozás című témakörben olvashat.
A következő parancs létrehoz egy JWT-t egy felhasználó számára:MyTestUser
dotnet user-jwts create --name MyTestUser --scope "myapi:secrets"
Az előző parancs kimenete a következőhöz hasonló:
New JWT saved with ID '43e0b748'.
Name: MyTestUser
Scopes: myapi:secrets
Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.{Remaining token deleted}
Az előző token a /secret2 végpont tesztelésére használható a következő kódban:
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();