it-swarm.com.de

ASP.NET 5/MVC 6 Lokales Active Directory

Für frühere Versionen von .NET-Anwendungsvorlagen, d. H. 4.5.2, können Sie eine neue Webanwendung erstellen. Ändern Sie die Authentifizierung in "Arbeits- und Schulkonten" und wählen Sie "On-Premises". In .NET 5-Webanwendungsvorlagen verfügt die Option "Arbeits- und Schulkonten" nicht über die Option "Vor-Ort".

Wie gehen Sie bei der Authentifizierung über ein lokales Active Directory (LDAP) in .NET 5 mit ASP.NET Identity vor? Um klar zu sein, ich suche nicht nach Windows-Authentifizierung. Ich möchte, dass Benutzer ihre Anmeldeinformationen eingeben und die Authentifizierung für das lokale AD durchführen. IOW müssen Benutzer nicht an einem Windows-Computer angemeldet sein, sie können von ihren mobilen Geräten aus usw. darauf zugreifen.

Ich habe stundenlang erfolglos gesucht, aber es würde mich nicht wundern, wenn die Antwort irgendwo da draußen ist. Jede Hilfe wird geschätzt!

13
Blackrain

LDAP- und On-Premise-Authentifizierung sind nicht dasselbe, deshalb ist IMHO, On-Premises-Modus als "Out-of-the-Box" -Option - und auch deshalb, weil Microsoft kaum einen Schritt in Richtung Azure-Cloud drängt: )

On-Premises-Modus (wie Sie sehen können hier ) ist eine Möglichkeit, AD als Verbundanbieter zu verwenden (aktivieren Sie dies auf SF ), wie Twitter oder Facebook, wenn Sie möchten ; Sie können ADFS lokal (wenn Ihr AD dies unterstützt) oder in der Cloud (mit Azure) verwenden.

Wenn Sie nach LDAP-Authentifizierung suchen, ist der einfachste Weg zu arbeiten, den Modus "Individuelles Benutzerkonto" (der den alten Schulformularauthentifizierungen ähnelt) und AD als Quelle der Wahrheit für Benutzerauthentifizierung mit etwas wie (check dieser SO Artikel):

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

Wenn Sie jedoch mit heterogenen Systemen arbeiten, oder wenn Sie lieber mit etwas "sicherem" arbeiten möchten, empfehle ich Ihnen, OAuth2 zu verwenden, das in MVC 6 als Standard-Unterstützung dient.

Aktualisieren

Wenn Sie ASP.NET Identity mit LDAP verwenden möchten, können Sie Ihren persönlichen benutzerdefinierten Speicheranbieter so erstellen, dass er hier . Perfekt erklärt. Dies ist nicht schwierig, kann jedoch recht lange dauern .

10
Luca Ghersi

Es gibt keine lokale Option, da .NET Core WS-Fed zum Zeitpunkt des Versands nicht unterstützt. Selbst in älteren Versionen von .NET verwendeten On-Permises kein LDAP, es wurde WS-Fed verwendet, um mit einem ADFS-Server zu kommunizieren.

Sehr alte Versionen von ASP.NET verfügten über einen AD-Mitgliedschaftsanbieter, der jedoch aus Sicherheitsgründen problematisch war und nicht in ASP.NET 4.0 weitergeleitet wurde

Sie können Ihren eigenen Mitgliedschaftsanbieter implementieren, .NET Core verfügt jedoch über keine LDAP/System.DirectoryService-Klassen. Sie müssen also alles von Grund auf neu erstellen, einschließlich der Erstellung einer Bibliothek, um LDAP über Sockets zu unterhalten.

TLDR: Das geht nicht.

1
blowdart

Ich kenne keine Vorlagen oder nichts, aber ich habe meinen eigenen Identitätsanbieter mit oAuth2 und Owin gemäß dieser Anleitung eingerichtet.

http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-and-identity-2/

Um sich dann gegen Active Directory zu authentifizieren, habe ich meinen eigenen Userstore und Usermanager erstellt und mache dies manuell mit den UserPrincipal- und PrinipalContext-Klassen aus den Directory.Masnagement-Assemblys.

0
Ryan Mann