Actuellement, j'ai créé une application Web Identity Server 4 avec des fournisseurs de connexion externes avec un identifiant client et des secrets par défaut. Mais mon objectif est d'enregistrer les fournisseurs d'authentification comme Azure, Google, Facebook en fonction du locataire.
J'ai utilisé l' assembly multi-locataires SaasKit , ici j'ai essayé le middleware app.usepertenant () . Mais la méthode UseGoogleAuthentication () est obsolète, je n'ai donc pas pu obtenir d'authentification multi-locataire à l'aide de ce middleware usepertenant.
Code actuel,
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddMicrosoftAccount(option =>
{
option.ClientId = "clientid";
option.ClientSecret = "clientsecret";
option.SaveTokens = true;
});
Le code attendu est comme ci-dessous,
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
la source
la source
Réponses:
Voir les documents MS officiels, fournisseurs d'authentification par locataire
Le cadre ASP.NET Core n'a pas de solution intégrée pour l'authentification multi-locataire. Bien qu'il soit certainement possible pour les clients d'en écrire un, en utilisant les fonctionnalités intégrées, nous recommandons aux clients de se pencher sur Orchard Core à cet effet.
la source
Étant donné que l'authentification doit être configurée lors de l'enregistrement DI, vous devrez configurer tous les fournisseurs de connexion externes en général lors de l'enregistrement de l'authentification.
Au cours de cette étape, vous devez ajouter tous les schémas. Un schéma a un identifiant client / secret fixe, vous devez donc amorcer votre IdentityServer avec toutes les informations d'identification du fournisseur de connexion externe, que vous prenez en charge pour tous vos clients. Le nom du schéma doit être unique.
Par exemple, le locataire A peut avoir un schéma "A_microsoft", le locataire B peut avoir un schéma "B_microsoft", etc.
Vous pouvez ensuite vous référer à ces schémas d'authentification lors de l'appel de méthodes dans IdentityServer. Connexion, défi, déconnexion, etc.
Sachez que cela nécessitera d'amorcer IdentityServer un ensemble complet de locataires. Selon votre scénario, si les locataires sont mis à jour régulièrement, il faudra également redémarrer régulièrement IdentityServer pour être au courant des nouveaux schémas d'authentification.
Si c'est un problème, vous pouvez probablement augmenter en quelque sorte les schémas d'authentification enregistrés pendant l'exécution d'IdentityServer, mais ce ne sera pas facile. Cela peut nécessiter des implémentations personnalisées plus importantes du middleware d'authentification fourni avec AspNetCore.
la source
Voulez-vous dire que vous souhaitez ajouter la prise en charge de plusieurs fournisseurs d'authentification? Ce document spécifiait déjà comment ajouter plusieurs fournisseurs d'authentification dans le service de configuration. Plus besoin de l'utiliser
app.UseXXX
pour configurer vous-même le pipelinela source