Saat ini, saya telah membuat aplikasi web server Identity 4 dengan penyedia login eksternal dengan id dan rahasia klien default. Tetapi tujuan saya adalah mendaftarkan penyedia otentikasi seperti Azure, Google, Facebook berdasarkan penyewa.
Saya telah menggunakan perakitan multi-tenancy SaasKit , di sini saya telah mencoba app.usepertenant () middleware. Tetapi metode UseGoogleAuthentication () sudah usang, jadi saya tidak bisa mencapai otentikasi multi-penyewa menggunakan middleware usepertenant ini.
Kode saat ini,
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddMicrosoftAccount(option =>
{
option.ClientId = "clientid";
option.ClientSecret = "clientsecret";
option.SaveTokens = true;
});
Kode yang diharapkan seperti di bawah ini,
var authentication = services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme);
if (tenant.hasMicrosoft)
{
authentication.AddMicrosoftAccount(option =>
{
option.ClientId = "clientid";
option.ClientSecret = "clientsecret";
option.SaveTokens = true;
});
}
if (tenant.hasGoogle)
{
authentication.AddGoogle(option =>
{
option.ClientId = "clientid";
option.ClientSecret = "clientsecret";
option.SaveTokens = true;
});
}
authentication.AddCookie( options =>
{
options.SlidingExpiration = true;
options.ExpireTimeSpan = new TimeSpan(7, 0, 0, 0);
});
authentication
asp.net-core
identityserver4
multi-tenant
saaskit
Madhan kumar D
sumber
sumber
Jawaban:
Lihat dokumen MS resmi, penyedia otentikasi per penyewa
ASP.NET Core framework tidak memiliki solusi bawaan untuk otentikasi multi-tenant. Meskipun tentu saja memungkinkan bagi pelanggan untuk menulis satu, menggunakan fitur bawaan, kami menyarankan pelanggan untuk melihat ke Orchard Core untuk tujuan ini.
sumber
Karena otentikasi perlu dikonfigurasi selama pendaftaran DI, Anda harus mengatur semua penyedia login eksternal secara umum selama pendaftaran otentikasi.
Selama langkah itu, Anda perlu menambahkan semua skema. Skema memiliki id / rahasia klien tetap, jadi Anda harus mem-bootstrap IdentityServer Anda dengan semua kredensial penyedia login eksternal, yang Anda dukung untuk semua klien Anda. Nama skema harus unik.
Sebagai contoh, penyewa A mungkin memiliki skema "A_microsoft", penyewa B mungkin memiliki skema "B_microsoft", dll.
Anda kemudian dapat merujuk ke skema otentikasi tersebut, saat memanggil metode di IdentityServer. Masuk, Tantangan, Masuk, dll.
Perlu diketahui, bahwa ini akan membutuhkan bootstrap IdentityServer set lengkap penyewa. Bergantung pada skenario Anda, jika penyewa diperbarui secara teratur, penyewa IdentityServer juga akan membutuhkan restart secara berkala untuk mengetahui skema otentikasi baru.
Jika itu adalah masalah, Anda mungkin bisa menambah skema otentikasi terdaftar selama runtime dari IdentityServer, tetapi itu tidak akan mudah. Mungkin memerlukan implementasi kustom yang lebih besar dari middleware otentikasi yang datang dengan AspNetCore.
sumber
Apakah Anda bermaksud menambahkan dukungan untuk beberapa penyedia otentikasi? Dokumen ini sudah menentukan cara menambahkan beberapa penyedia auth dalam layanan konfigurasi. Tidak perlu menggunakan
app.UseXXX
lagi untuk mengkonfigurasi pipa sendirisumber