2017-02-28 5 views
1

erhalten Arbeiten an einer Intranet-App in .NET Core und ich möchte Informationen abrufen, die mit den AD-Benutzern verbunden sind. Momentan wird die gesamte Authentifizierung von Windows übernommen und funktioniert hervorragend. Gibt es eine Möglichkeit, Daten von AD zu ziehen? Ich mag Informationen wie Vor- und Nachnamen erhalten, E-Mail, ID usw.AD-Informationen für Benutzer in Windows-Authentifizierung für ASP.NET Core

+0

Ich denke für jetzt ist dies Ihre einzige Option. https://github.com/dsbenghe/Novell.Directory.Ldap.NETStandard –

+0

Wenn Sie das Framework 4.6.1 über project.json zur Verfügung haben, können Sie dieses https://vikutech.blogspot.co.uk/2016/07 verwenden /ldap-with-aspnet-core-identity-in-mvc-core.html – K7Buoy

+0

@ K7Buoy, Dies ist für .NET Core und es ist nicht kompatibel mit den alten .NET Framework-Pakete. Trotzdem danke! –

Antwort

0

Nach einer Woche, dies zu versuchen, und dass ich das Novell.Directory.Ldap Paket endlich vorangekommen werden. Es war viel einfacher, Fehler zu beheben, und ich musste mir keine Sorgen über das Ausführen des dualen Frameworks machen.

Zuerst gehen Sie auf die Paket-Manager-Konsole und Typ:

Install-Package Novell.Directory.Ldap 

Dies wird das Paket zu Ihrem Projekt und fügen Sie ihn in der project.json laden.

Es gibt ein paar Beispiele gibt, aber bei den meisten von ihnen nach einem Blick, sie waren nicht wirklich das, was ich brauchte. Ich landete mit dem folgenden Code auf:

 var logPath = System.IO.Path.GetTempFileName(); 
     var logWriter = System.IO.File.CreateText(logPath); 
     var user = "cn="+User.Identity.Name.Split('\\')[1]; 
     logWriter.WriteLine("Current Ldap results:"); 

     LdapConnection ADconn = new LdapConnection(); 
     ADconn.Connect("DC IP address", 389); 
     ADconn.Bind("DOMAIN\\username", "password"); 
     logWriter.WriteLine(ADconn.GetSchemaDN()); 

     LdapSearchResults lsc = ADconn.Search("ou=OrgUnit,dc=DOMAIN,dc=com",  
      LdapConnection.SCOPE_SUB, 
      user, attrs, false); 
     while (lsc.hasMore()) 
     { 
      LdapEntry nextEntry = null; 
      try 
      { 
       nextEntry = lsc.next(); 
      } 
      catch (LdapException e) 
      { 
       logWriter.WriteLine("Error: " + e.LdapErrorMessage); 
       //Exception is thrown, go for next entry 
       continue; 
      } 
      DisplayName = nextEntry.getAttribute("displayName").StringValue; 
      UserADId = new Guid((byte[])(Array)nextEntry.getAttribute("objectGuid").ByteValue).ToString(); 
      EMail = nextEntry.getAttribute("mail").StringValue; 
      logWriter.WriteLine(DisplayName); 
      logWriter.WriteLine(UserADId); 
      logWriter.WriteLine(EMail); 

     } 
     logWriter.Dispose(); 
     //Procced 

     //While all the entries are parsed, disconnect 
     ADconn.Disconnect(); 

Verwendung von Windows-Authentifizierung, das der von AD gezogen Attributen des Benutzers werden kann. Einmal gezogen, können Sie sie Variablen zuweisen und sie verwenden! Es erstellt auch eine TMP-Datei in Ihrem C: \ Windows \ Temp \ -Ordner, der als Debugger in der Bereitstellung fungiert.

Hoffe, das hilft anderen!

Verwandte Themen