Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Oleh Rick Anderson
Alat dotnet user-jwts baris perintah dapat membuat dan mengelola JSON Web Token (JWTs) lokal aplikasi tertentu.
Artikel ini menyediakan detail sintaks untuk perintah dan contoh.
Sinopsis
dotnet user-jwts [<PROJECT>] [command]
dotnet user-jwts [command] -h|--help
Deskripsi
Membuat dan mengelola Token Web JSON lokal proyek tertentu.
Argumen
PROJECT | SOLUTION
Proyek MSBuild yang digunakan untuk menjalankan perintah. Jika proyek tidak ditentukan, MSBuild mencari direktori kerja saat ini untuk file yang memiliki ekstensi file yang berakhiran proj. Kemudian menggunakan file tersebut untuk mendapatkan informasi proyek untuk perintah .
Perintah
| Perintah | Deskripsi |
|---|---|
clear |
Hapus semua JWT yang dikeluarkan untuk proyek. |
create |
Terbitkan JSON Web Token baru. |
remove |
Hapus .JWT |
key |
Menampilkan atau mengatur ulang kunci penandatanganan yang digunakan untuk menerbitkan JWT. |
list |
Cantumkan JWT yang dikeluarkan untuk proyek. |
print |
Tampilkan detail dari JWT. |
Opsi untuk perintah buat
Penggunaan: dotnet user-jwts create [options]
| Opsi | Deskripsi |
|---|---|
-p \| --project |
Jalur proyek yang akan dioperasikan. Secara default menggunakan proyek di direktori saat ini. |
--scheme |
Nama skema yang digunakan untuk token yang dihasilkan. Secara default menjadi Bearer. |
-n \| --name |
Nama pengguna yang akan dibuat JWT . Default ke pengguna lingkungan saat ini. |
--audience |
Audiens yang akan dibuat untuknya JWT . Secara default, menggunakan URL yang dikonfigurasi dalam file launchSettings.json proyek. |
--issuer |
Penerbit JWT. Secara default menjadi dotnet-user-jwts. |
--scope |
Klaim cakupan untuk ditambahkan ke JWT. Tentukan sekali untuk setiap cakupan. |
--role |
Klaim peran untuk ditambahkan ke JWT. Tentukan sekali untuk setiap peran. |
--claim |
Klaim untuk ditambahkan ke JWT. Tentukan sekali untuk setiap klaim dalam format name=value. |
--not-before |
Tanggal dan waktu UTC di mana JWT menjadi valid, dalam format yyyy-MM-dd [[HH:mm[[:ss]]]]. Default ke tanggal dan waktu JWT dibuat. |
--expires-on |
Tanggal dan waktu UTC di mana kedaluwarsa JWT , dalam format yyyy-MM-dd [[[ [HH:mm]]:ss]]. Secara default, enam bulan setelah tanggal --not-before. Jangan gunakan opsi ini dengan opsi --valid-for. |
--valid-for |
Jumlah waktu tetap JWT valid. Ketika waktu tercapai, kedaluwarsa JWT . Tentukan angka diikuti dengan jenis durasi (d hari, jam, hm menit, s detik), seperti 365d. Jangan gunakan opsi ini dengan opsi --expires-on. |
-o \| --output |
Format yang digunakan untuk menampilkan output dari perintah: default, , tokenatau json. |
-h \| --help |
Tampilkan informasi bantuan untuk perintah. |
Contoh
Jalankan perintah berikut untuk membuat proyek web kosong dan tambahkan paket NuGet Microsoft.AspNetCore.Authentication.JwtBearer :
dotnet new web -o MyJWT
cd MyJWT
dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
Ganti konten file Program.cs dengan kode berikut:
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();
Dalam kode sebelumnya, permintaan GET ke endpoint /secret mengembalikan error 401 Unauthorized. Aplikasi produksi mungkin mendapatkan JWT dari layanan token Keamanan, mungkin sebagai respons terhadap masuk dengan kredensial. Saat Anda menggunakan API selama pengembangan lokal, dotnet user-jwts alat baris perintah dapat digunakan untuk membuat dan mengelola JWT lokal khusus aplikasi.
Alat user-jwts ini mirip dalam konsep dengan alat rahasia pengguna . Ini dapat digunakan untuk mengelola nilai untuk aplikasi yang hanya valid untuk pengembang di komputer lokal. Bahkan, alat user-jwts ini memanfaatkan infrastruktur user-secrets untuk mengelola kunci yang digunakan untuk menandatangani JWT. Pendekatan ini memastikan kunci disimpan dengan aman di profil pengguna.
Alat ini user-jwts menyembunyikan detail implementasi, seperti di mana dan bagaimana nilai disimpan. Alat ini dapat digunakan tanpa mengetahui detail implementasinya.
Nilai disimpan dalam file JSON di folder profil pengguna komputer lokal:
Windows: %APPDATA%\Microsoft\UserSecrets<secrets_GUID>\user-jwts.jsaktif
Linux/macOS: ~/.microsoft/usersecrets/<secrets_GUID>/user-jwts.json
Membuat JWT
Perintah berikut membuat lokal JWT:
dotnet user-jwts create
Perintah sebelumnya membuat JWT dan memperbarui file proyek appsettings.Development.json dengan JSON yang mirip dengan contoh berikut:
{
"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"
}
}
}
}
JWT Salin dan yang ID dibuat dalam perintah sebelumnya. Gunakan alat seperti Curl untuk menguji /secret titik akhir, di mana {token} adalah yang dihasilkan JWTsebelumnya :
curl -i -H "Authorization: Bearer {token}" https://localhost:{port}/secret
Menampilkan JWT informasi keamanan
Perintah berikut menampilkan informasi keamanan, termasuk kedaluwarsa JWT , cakupan, peran, header token dan payload, dan token ringkas:
dotnet user-jwts print {ID} --show-all
Membuat token untuk pengguna dan cakupan tertentu
Perintah berikut membuat JWT untuk pengguna bernama MyTestUser. Untuk opsi yang didukung create , lihat bagian Opsi untuk perintah buat .
dotnet user-jwts create --name MyTestUser --scope "myapi:secrets"
Perintah sebelumnya memiliki output yang mirip dengan contoh berikut:
New JWT saved with ID '43e0b748'.
Name: MyTestUser
Scopes: myapi:secrets
Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.{Remaining token deleted}
Token sebelumnya dapat digunakan untuk menguji /secret2 titik akhir dalam kode berikut:
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();
Konten terkait
ASP.NET Core