Veröffentlicht 13. November 20195 j Mahlzeit, ich möchte ein Ticketsystem mit einer GUI und einer Benutzeranmeldung über eine LDAP Anbindung in C# programmieren. Nun bin ich mittlerweile schon auf Stackoverflow, mycsharp etc. gewesen, um mir gewisse Information über die Herangehensweise von solch einem Projekt (KEIN Abschlussprojekt) herauszulesen. Ich lerne aktuell den FISI und bin im 3. Lj - demnach kein AE'ler aber mit meinem Thema schon im richtigen Forum. Die Authentifizierung mit dem DomAdmin funktioniert. Mit dem Haltepunkt und dem Curser konnte ich sehen, dass er die OU's auch auslesen konnte aber ich weiß nicht, wie ich den Code ideal auf die Abfrage der Benutzerdaten vorbereite, um ihn später an der richtigen Stelle zu importieren. Es ist wie "ein Brett vor'm Kopp'" und ein Hauch von Verzweiflung. Wer kann helfen? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Security; using System.DirectoryServices; using System.DirectoryServices.ActiveDirectory; namespace AdTest { class Program { static void Main(string[] args) { string domain = "172.16.112.30"; string user = "Administrator"; string password = "HALLO123"; Authenticate(domain, user, password); } public static bool Authenticate(string domain, string username, string password) { SecureString pwd = new SecureString(); bool bAuth = false; DirectoryEntry entry = null; //Durchlaufe das Passwort und hänge es dem SecureString an foreach (char c in password) { pwd.AppendChar(c); } //Bewirkt, dass das Passwort nicht mehr verändert werden kann pwd.MakeReadOnly(); //Passwort wird einem Pointer übergeben, damit dieser später "entschlüsselt" werden kann IntPtr pPwd = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(pwd); try { entry = new DirectoryEntry(string.Concat(@"LDAP://"+domain, ""), username, System.Runtime.InteropServices.Marshal.PtrToStringBSTR(pPwd)); object nativeObject = entry.NativeObject; bAuth = true; } catch (Exception) { bAuth = false; } finally { entry.Close(); entry.Dispose(); } return bAuth; } } }
13. November 20195 j vor 10 Stunden schrieb varafisi: [...] aber ich weiß nicht, wie ich den Code ideal auf die Abfrage der Benutzerdaten vorbereite, um ihn später an der richtigen Stelle zu importieren. Es ist wie "ein Brett vor'm Kopp'" und ein Hauch von Verzweiflung. [...] Wenn ich dich also richtig verstehe, funktioniert dein bereits geschriebener Code, er ist nur hier nicht an der richtigen Stelle um ihn sinnvoll einzusetzen. Wenn das so ist, pack die Authentifizierung in eine eigene Klasse und referenzier an der richtigen Stelle als Assembly/Nuget. Irgendwie habe ich aber meine Zweifel, dass du das gemeint hast. Falls nicht, wäre es gut, wenn du nochmal deine Frage ein wenig simpler stellen könntest... ?
13. November 20195 j Autor vor 1 Stunde schrieb 0x00: Wenn ich dich also richtig verstehe, funktioniert dein bereits geschriebener Code, er ist nur hier nicht an der richtigen Stelle um ihn sinnvoll einzusetzen. Wenn das so ist, pack die Authentifizierung in eine eigene Klasse und referenzier an der richtigen Stelle als Assembly/Nuget. Irgendwie habe ich aber meine Zweifel, dass du das gemeint hast. Falls nicht, wäre es gut, wenn du nochmal deine Frage ein wenig simpler stellen könntest... ? So wie er dort steht funktioniert er nur bis in die oberste Ebene (Domäne). Bislang sieht er alle OU's was heißt, dass sich quasi jeder User jeder OU an dem Ticketsystem anmelden kann. Ich habe die LDAP Anbindung nun folgender Maßen gemacht: string adDomain = @"LDAP://" + domain + "/OU=Benutzer,OU=Ticketsystem, DC=domain, DC=local"; Nun habe ich eine Instanz vom Typ DirectorySearcher angelegt, der prüft, ob der Benutzer der sich an dem Ticketsystem anmelden will erstmal in der Default OU "Users" ist und zusätzlich der samaccountname = + username + ist. Jetzt wo du es sagst macht es aber durchaus Sinn, die Authentifizierung in eine eigene Klasse auszulagern und später aufzurufen. Aber bislang macht mein Code nichts anderes als die Anmeldung bzw. die Gegenprüfung vom Active Directory. Sofern wir ein gewisses Berechtigungsschema implementieren wollen, könnte das den Rahmen sprengen und dann müsste ich den Teil wirklich auslagern. Man hat das Nerven gekostet..
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.