Announcement

Collapse
No announcement yet.

Windows Domainen-Athentifizierung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Windows Domainen-Athentifizierung

    Hi,

    ich schreibe in Delphi 7 eine Client-/Serverapplikation.
    Bisher muss sich der Clientanwender noch per Eingabe seiner Benutzerdaten anmelden.

    Alle Benutzer sind zur Zeit alle in der selben Domaine angemeldet, wie es auch der Server ist.
    Die Benutzeranmeldung meiner Anwendung lässt sich doch bestimmt durch eine Windows Authentifizerung automatisieren, so dass der Client eine Kennung von Windows - sei es eine Art SessionID - an den Server übermittelt, welcher diese dann beim Domain Controller auf ihre Gültigkeit hin überprüft und mit der dann klar ist, welcher Domainen-Benutzer sich gerade anmelden möchte.

    Über Tips, Tutorials, Beispielsources, etc. würd' ich mich sehr freuen:-)

    Grüße,
    Martin

  • #2
    Hallo Martin,

    wie wird den vom Client auf den Server zugegriffen (TCP/IP, NamedPipe, DCOM, etc.)?

    MFG
    André Mosinsk

    Comment


    • #3
      Die Kommunikation geschieht via TCP/IP..

      Comment


      • #4
        Hallo Martin,

        hat etwas gedauert, da ich mich schon lange nicht mehr mit diesem Thema beschäftigt hatte. Ganz einfach ist das nicht. Aber ich versuche mal.

        1. Nachbildung eines Clienttoken(Context) auf dem Server
        Zur Berechtigungsprüfung brauchst Du auf dem Server einen Token des Clients. Diesen bekommst Du durch das Austauschen von Paketen, welche durch API Funktionen (sowohl auf Client als auch auf Serverseite) bereitgestellt werden. Nun ist es schwierig, alle möglichen Kombinationen darzustellen, deshalb nur ein Link auf die entsprechenden API´s http://msdn.microsoft.com/library/default.asp?url=/library/en-us/secauthn/security/securityfunctiontable.asp. Ist das erfolgreich abgeschlossen, kanns Du den Token bekommen, in dem Du die Funktion ImpersonateSecurityContext aufrufst. Ab diesem Zeitpunkt läuft der Thread (in dem diese Funktion aufgerufen wird) in dem Context des Clients.

        2. SecurityToken holen
        Da der Thread jetzt im Context des Clients läuft, kannst Du mit der Funktion OpenThreadToken/OpenProcessToken Dir den Token des Clients holen.

        3. Berechtigungsprüfung
        Benötigt wird ein SecurityDescriptor, welcher die erforderlichen Berechtigungen enthält (für Benutzer und/oder Gruppen). Ob die entsprechenden Berechtigungen durch den Client erfüllt werden, läßt sich mit der Funktion AccessCheck feststellen.

        Ich hoffe, das Du damit einen Ansatz gefunden hast. Ansonsten heist es MSDN aufblättern lesen und probieren.

        MFG
        André Mosinsk

        Comment


        • #5
          Hallo Martin,

          habe noch was vergessen. In den Indykomponenten (http://www.indyproject.org) findest Du eine Übersetzung dieser Funktionen nach Delphi.

          MFG
          André Mosinsk

          Comment

          Working...
          X