Obecnie utworzyłem aplikację internetową serwera tożsamości 4 z zewnętrznymi dostawcami logowania z domyślnym identyfikatorem klienta i kluczami tajnymi. Ale moim celem jest zarejestrowanie dostawców uwierzytelniania, takich jak Azure, Google, Facebook w oparciu o najemcę.
Użyłem zestawu wielodostępnego SaasKit , tutaj wypróbowałem oprogramowanie pośrednie app.usepertenant () . Ale metoda UseGoogleAuthentication () jest przestarzała, więc nie mogłem uzyskać uwierzytelnienia dla wielu dzierżawców przy użyciu tego oprogramowania pośredniego.
Aktualny kod,
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddMicrosoftAccount(option =>
{
option.ClientId = "clientid";
option.ClientSecret = "clientsecret";
option.SaveTokens = true;
});
Oczekiwany kod jest jak poniżej,
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.
źródło
źródło
Odpowiedzi:
Zobacz oficjalne dokumenty MS, dostawców uwierzytelnienia na najemcę
Framework ASP.NET Core nie ma wbudowanego rozwiązania do uwierzytelniania wielu dzierżawców. Chociaż klienci mogą napisać jedną z nich, korzystając z wbudowanych funkcji, zalecamy klientom sprawdzenie w tym celu Orchard Core .
źródło
Ponieważ uwierzytelnianie musi zostać skonfigurowane podczas rejestracji DI, będziesz musiał ogólnie skonfigurować wszystkich zewnętrznych dostawców logowania podczas rejestracji uwierzytelnienia.
Podczas tego kroku musisz dodać wszystkie schematy. Schemat ma ustalony identyfikator klienta / klucz tajny, więc musisz bootstrapować swój serwer tożsamości przy użyciu wszystkich poświadczeń zewnętrznego dostawcy logowania, które obsługujesz dla wszystkich swoich klientów. Nazwa schematu musi być unikalna.
Na przykład najemca A może mieć schemat „A_microsoft”, najemca B może mieć schemat „B_microsoft” itp.
Następnie możesz odwoływać się do tych schematów uwierzytelniania podczas wywoływania metod w IdentityServer. Logowanie, wyzwanie, logowanie itp.
Należy pamiętać, że będzie to wymagać przeładowania IdentityServer pełnego zestawu najemców. W zależności od scenariusza, jeśli dzierżawcy są regularnie aktualizowani, konieczne będzie także regularne ponowne uruchamianie serwera IdentityServer, aby mieć świadomość nowych schematów uwierzytelniania.
Jeśli jest to problem, prawdopodobnie możesz w jakiś sposób rozszerzyć zarejestrowane schematy uwierzytelniania w czasie wykonywania IdentityServer, ale nie będzie to łatwe. Może to wymagać większych niestandardowych implementacji oprogramowania pośredniego uwierzytelniania dostarczanego z AspNetCore.
źródło
Czy masz na myśli, że chcesz dodać obsługę wielu dostawców uwierzytelniania? W tym dokumencie już określono sposób dodawania wielu dostawców uwierzytelniania w usłudze konfiguracji. Nie trzeba
app.UseXXX
już używać do samodzielnego konfigurowania potokuźródło