Asp.net core 3.1'de kiracıya dayalı kimlik doğrulama düzenlerini kaydetme


12

Şu anda, varsayılan istemci kimliği ve sırları olan harici giriş sağlayıcıları ile bir Identity server 4 web uygulaması oluşturdum. Ancak amacım, kiracıya dayalı Azure, Google, Facebook gibi kimlik doğrulama sağlayıcılarını kaydetmek.

Kendimi kullanılmış olması SaasKit burada ben denedim, montaj çok kullanıcılı olma app.usepertenant () katman. Ancak UseGoogleAuthentication () yöntemi eski, bu yüzden bu usepertenant ara katman yazılımı kullanarak çok kiracılı kimlik doğrulaması elde edemedim.

Mevcut kod,

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
   .AddMicrosoftAccount(option =>
     {
        option.ClientId = "clientid";
        option.ClientSecret = "clientsecret";
        option.SaveTokens = true;
     });

Beklenen kod aşağıdaki gibidir,

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);
 });


Belki bu ileti dizisinde bir yanıt veya geçici bir çözüm bulabilirsiniz .
Ruard van Elburg

@RuardvanElburg Cevabınız için teşekkür ederiz, önerilen iş parçacığından uygulama başlarken kiracıya göre zaten kayıtlı şema seçeneklerini güncelleyebiliriz. Onları güncelleyemedikten sonra.
Madhan kumar D

Kiracı başına farklı ClientId / ClientSecret ayarlarına sahip olmak ister misiniz? Yoksa yalnızca kiracıya göre farklı şemalar mı eklemek istiyorsunuz?
Kirk Larkin

@KirkLarkantın müşteri kimliği / sırrı ile farklı şemalar işaretleyin. Aşağıdaki gibi, eğer (tenant.hasMicrosoft) {authentication.AddMicrosoftAccount (option => {option.ClientId = "clientid"; option.ClientSecret = "clientsecret"; option.SaveTokens = true;}); }
Madhan kumar D

herhangi bir güncelleme var mı_
Madhan kumar D

Yanıtlar:



0

Kimlik doğrulamanın DI kaydı sırasında yapılandırılması gerektiğinden, kimlik doğrulama kaydı sırasında genel olarak tüm harici oturum açma sağlayıcılarını ayarlamanız gerekir.

Bu adım sırasında, tüm şemaları eklemeniz gerekir. Bir şemanın sabit bir istemci kimliği / sırrı olduğundan, tüm müşterileriniz için desteklediğiniz tüm harici giriş sağlayıcı kimlik bilgileriyle IdentityServer'ınızı önyüklemeniz gerekir. Şema adının benzersiz olması gerekir.

Örnek olarak, kiracı A'nın şeması "A_microsoft" olabilir, kiracı B'nin şeması "B_microsoft" vb. Olabilir.

Daha sonra IdentityServer'da yöntemleri çağırırken bu kimlik doğrulama şemalarına başvurabilirsiniz. SignIn, Challenge, SignOut vb.

Bunun IdentityServer'ın tam bir kiracı seti önyüklemesini gerektireceğini unutmayın. Senaryonuza bağlı olarak, kiracılar düzenli olarak güncellenirse, yeni kimlik doğrulama düzenlerinden haberdar olmak için IdentityServer'ın düzenli olarak yeniden başlatılması da gerekir.


Bu bir sorunsa, IdentityServer'ın çalışması sırasında muhtemelen bir şekilde kayıtlı kimlik doğrulama düzenlerini artırabilirsiniz, ancak bu kolay olmayacaktır. AspNetCore ile gelen kimlik doğrulama ara katmanının daha büyük özel uygulamalarını gerektirebilir.


0

Yani birden fazla kimlik doğrulama sağlayıcısı için destek eklemek istiyor musunuz? Bu Belge , yapılandırma hizmetine nasıl birden fazla kimlik doğrulama sağlayıcısının ekleneceğini zaten belirtmiştir. app.UseXXXBoru hattını kendiniz yapılandırmak için artık kullanmanıza gerek yok

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.