Tidak akan ada yang aneh, satu kerangka kerja IdentityServer4 akan mengautentikasi dengan nama pengguna dan kata sandi pada Api tertentu, ditambah menangani refresh_token.
Ini akan bekerja dengan IdentityDbContext, IdentityUser yang ada.
Hasilnya akan menjadi skenario di mana, untuk setiap otentikasi, satu refresh_token akan dikeluarkan dan disimpan di tabel PersistedGrants. Ini adalah salah satu dari empat jenis izin OAuth 2.0:
Kredensial Kata Sandi Pemilik Sumberdaya: Digunakan oleh aplikasi tepercaya, seperti aplikasi yang merupakan bagian dari layanan itu sendiri.Semua pekerjaan pemeliharaan token dilakukan oleh kerangka kerja.
Jadi mari kita mulai.
Untuk menentukan metode resolusi, "klien" ditetapkan, saya akan memilikinya:
DataLayer.Confignew Client { ClientId = _configurationManager.Value.ClientId, AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
Selanjutnya, klien ini duduk di basis data ketika dibuat:
TestIdentityServer.Program services.GetRequiredService<DbInitializer>().Initialize();
Dalam metode "Inisialisasi", kode telah ditambahkan untuk membuat database yang diperlukan dan memasukkan data, termasuk klien. Tetapi sebelum itu, Anda perlu melakukan migrasi, karena Anda harus membuat database dari 3 konteks, di mana konteks pertama adalah IdentityDbContext ApplicationUser, dan sisanya untuk IdentityServer4:
DataLayer.DbInitializer _context.Database.Migrate(); _configurationDbContext.Database.Migrate(); _persistedGrantDbContext.Database.Migrate();
if (!_configurationDbContext.Clients.Any()) { foreach (var client in _config.GetClients().ToList()) { _configurationDbContext.Clients.Add(client.ToEntity()); } _configurationDbContext.SaveChanges(); }
Migrasi:
dotnet ef migrations add InitialIdentityServerPersistedGrantDbMigration -c PersistedGrantDbContext -o Data/Migrations/IdentityServer/PersistedGrantDb dotnet ef migrations add InitialIdentityServerConfigurationDbMigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/ConfigurationDb dotnet ef migrations add InitialAuthMigration -c AuthContext -o Data/Migrations/IdentityServer/Auth
Tautan ke kode akan berada di akhir.
Silakan. Setelah mengatur klien dan membuat basis data, server sudah dapat memproses permintaan "/ hubungkan / token" dengan login dengan kata sandi dan buat masalah access_token dengan refresh_token.
Menurutnya, dengan indikasi refresh_token, perbarui.
Kata Sandi Nama Pengguna:

refresh_token

/ hubungkan / userinfo

Sekarang tambahkan api yang akan diotorisasi oleh IdentityServer4. Hubungannya dengan dia adalah sebagai berikut:
DataApi.Startup services.AddAuthentication("Bearer") .AddIdentityServerAuthentication(options => { options.Authority = settings.Authority;
Api itu sendiri akan dikerahkan ke port lain.
Otorisasi sekarang akan diperiksa seperti biasa dengan atribut "[Otorisasi]".
/ api / Default

Itu saja, tulis siapa yang berpikir apa atau apa yang hilang.
Tautan ke kode .
UPD: Tanda tangan jwt tanda tanganMetode tanda tangan tambahan: RSA yang dihasilkan saat startup dan * .pfx file sertifikat. Metode yang sesuai dapat beralih ke "appsettings.json", properti "SigningCredentialConfig".