Pour les versions antérieures des modèles d’application .NET, c’est-à-dire 4.5.2, vous pouvez créer une nouvelle application Web, changer l’authentification en "Comptes professionnels" et choisir "Sur site". Dans les modèles d'application Web .NET 5, l'option «Comptes professionnels et scolaires» ne comporte pas d'option «Sur site».
Comment procéder pour l'authentification via un annuaire Active Directory (LDAP) dans .NET 5 à l'aide de l'identité ASP.NET. Pour être clair, je ne cherche pas l'authentification Windows, je veux que les utilisateurs entrent leurs informations d'identification et traitent l'authentification par rapport à l'AD local. IOW, les utilisateurs n'ont pas besoin d'être connectés à un ordinateur Windows, ils peuvent y accéder depuis leur appareil mobile, etc.
J'ai cherché pendant des heures sans succès, mais je ne serais pas surpris si la réponse est donnée quelque part. Toute aide est appréciée!
L'authentification LDAP et l'authentification sur site ne sont pas la même chose, c'est pourquoi, le mode IMHO, On-Premises est désormais l'option "prête à l'emploi" - et aussi parce que Microsoft ne demande pas à tout le monde de passer à Azure Cloud: )
Le mode sur site (comme vous pouvez le constater ici ) est un moyen d’utiliser AD en tant que fournisseur de fédération (cochez cette option sur SF ), comme Twitter ou Facebook, si vous préférez; vous pouvez utiliser ADFS localement (si votre AD le prend en charge) ou dans le cloud (avec Azure).
Si vous recherchez une authentification LDAP, le moyen le plus simple de travailler consiste à utiliser le mode "Compte utilisateur individuel" (semblable à celui utilisé pour les anciens formulaires d'école) et à utiliser AD comme source de vérité pour l'utilisateur avec quelque chose comme (check this SO article):
using System.Security;
using System.DirectoryServices.AccountManagement;
public struct Credentials
{
public string Username;
public string Password;
}
public class Domain_Authentication
{
public Credentials Credentials;
public string Domain;
public Domain_Authentication(string Username, string Password, string SDomain)
{
Credentials.Username = Username;
Credentials.Password = Password;
Domain = SDomain;
}
public bool IsValid()
{
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Domain))
{
// validate the credentials
return pc.ValidateCredentials(Credentials.Username, Credentials.Password);
}
}
}
Quoi qu'il en soit, si vous travaillez avec des systèmes hétérogènes, ou si vous préférez travailler avec quelque chose de plus "sécurisé", je vous suggère d'utiliser OAuth2, qui constitue une prise en charge prête à l'emploi dans MVC 6.
Si vous souhaitez utiliser ASP.NET Identity avec LDAP, vous pouvez créer votre fournisseur de stockage personnalisé, comme expliqué parfaitement ici . Cela n’est pas difficile, mais sa mise en œuvre peut être assez longue.
Il n'y a pas d'option sur site, car .NET Core ne prend pas en charge WS-Fed au moment de l'expédition. Même dans les versions antérieures de .NET sur permises n'utilisant pas LDAP, il utilisait WS-Fed pour communiquer avec un serveur ADFS.
Les très anciennes versions d’ASP.NET avaient un fournisseur d’appartenance à AD, mais cela posait problème en termes de sécurité et ne se présentait pas dans ASP.NET 4.0.
Vous pouvez implémenter votre propre fournisseur d'adhésion, mais .NET Core n'a pas de classes LDAP/System.DirectoryService, vous devez donc tout faire à partir de zéro, y compris créer une bibliothèque pour parler de LDAP via des sockets.
TLDR: Vous ne pouvez pas.
Je ne connais aucun modèle ou quoi que ce soit, mais j'ai configuré mon propre fournisseur d'identité avec oAuth2 et Owin en suivant ce guide.
Ensuite, pour m'authentifier auprès d'Active Directory, j'ai créé mon propre userstore et usermanager et je le fais manuellement à l'aide des classes UserPrincipal et PrinipalContext des assemblys Directory.Masnagement.