Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

 

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... ?

  • 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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.