Derzeit habe ich eine Identity Server 4-Webanwendung mit externen Anmeldeanbietern mit Standard-Client-ID und Geheimnissen erstellt. Mein Ziel ist es jedoch, die Authentifizierungsanbieter wie Azure, Google und Facebook basierend auf dem Mandanten zu registrieren.
Ich habe die mandantenfähige SaasKit -Assembly verwendet. Hier habe ich die Middleware app.usepertenant () ausprobiert . Die UseGoogleAuthentication () -Methode ist jedoch veraltet, sodass ich mit dieser usepertenanten Middleware keine mandantenfähige Authentifizierung erreichen konnte.
Aktueller Code,
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddMicrosoftAccount(option =>
{
option.ClientId = "clientid";
option.ClientSecret = "clientsecret";
option.SaveTokens = true;
});
Der erwartete Code ist wie folgt:
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.
quelle
quelle
Antworten:
Siehe die offiziellen MS-Dokumente, Authentifizierungsanbieter pro Mandant
Das ASP.NET Core-Framework verfügt nicht über eine integrierte Lösung für die Authentifizierung mit mehreren Mandanten. Während es für Kunden sicherlich möglich ist, mithilfe der integrierten Funktionen eine zu schreiben, empfehlen wir Kunden, sich zu diesem Zweck mit Orchard Core zu befassen.
quelle
Da die Authentifizierung während der DI-Registrierung konfiguriert werden muss, müssen Sie während der Registrierung der Authentifizierung im Allgemeinen alle externen Anmeldeanbieter einrichten.
Während dieses Schritts müssen Sie alle Schemata hinzufügen. Ein Schema hat eine feste Client-ID / ein festes Client-Geheimnis. Daher müssen Sie Ihren IdentityServer mit allen Anmeldeinformationen des externen Anmeldeanbieters booten, die Sie für alle Ihre Clients unterstützen. Der Schemaname muss eindeutig sein.
Als Beispiel könnte Mieter A ein Schema "A_microsoft" haben, Mieter B könnte ein Schema "B_microsoft" usw. haben.
Sie können dann auf diese Authentifizierungsschemata verweisen, wenn Sie Methoden in IdentityServer aufrufen. Anmelden, Herausfordern, Anmelden usw.
Beachten Sie, dass hierfür ein vollständiger Satz von Mandanten für das Bootstrapping von IdentityServer erforderlich ist. Abhängig von Ihrem Szenario müssen Mandanten regelmäßig aktualisiert werden, wenn der IdentityServer regelmäßig aktualisiert wird, um über neue Authentifizierungsschemata informiert zu sein.
Wenn dies ein Problem ist, können Sie die registrierten Authentifizierungsschemata wahrscheinlich zur Laufzeit von IdentityServer irgendwie erweitern, aber es wird nicht einfach. Möglicherweise sind größere benutzerdefinierte Implementierungen der mit AspNetCore gelieferten Authentifizierungs-Middleware erforderlich.
quelle
Wollen Sie Unterstützung für mehrere Authentifizierungsanbieter hinzufügen? In diesem Dokument wurde bereits angegeben, wie mehrere Authentifizierungsanbieter zum Konfigurationsdienst hinzugefügt werden. Sie müssen
app.UseXXX
die Pipeline nicht mehr selbst konfigurierenquelle