Announcement

Collapse
No announcement yet.

Impersonate-Methode im .Net Klasse WindowsIdentity

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

  • Impersonate-Methode im .Net Klasse WindowsIdentity

    Hallo!
    Hab ein Problem hinsichtlich der Verwendung der Impersonate-Methode.

    Die einzige Methode, um dafür ein WindowsIdentity-Objekt zu erstellen, ist über die Win32-API UserLogon zu gehen.

    Da dies aber Win32 Code ist und dieser als unverwalteteter Code gilt, bin ich auf der Suche nach einer anderen Möglichkeit.
    Dabei soll ich auf jedem Fall im Bereich des verwalteten Codes bleiben.

    Ist eine Manipulation des eigenen WindowsIdentity-Object mit den Eingaben des anderen USers möglich?
    Oder:
    Kann die Verwendung von nichtverwaltetem Code irgendwie abgesichert werden?
    ODer zumindest:
    Wie kann eine Manipulation der verwendeten advapi32.dll verhindert werden?

    Herzlichen Dank,
    go.

  • #2
    Originally posted by go_1 View Post
    Die einzige Methode, um dafür ein WindowsIdentity-Objekt zu erstellen, ist über die Win32-API UserLogon zu gehen.
    go.
    Access Tokin geht nur über UserLogon, der Rest ist nicht so kompliziert

    Code:
    Private Sub ImpersonateIdentity(ByVal logonToken As IntPtr)
        ' Retrieve the Windows identity using the specified token.
        Dim windowsIdentity As New WindowsIdentity(logonToken)
    
        ' Create a WindowsImpersonationContext object by impersonating the
        ' Windows identity.
        Dim impersonationContext As WindowsImpersonationContext
        impersonationContext = windowsIdentity.Impersonate()
    
        WriteLine("Name of the identity after impersonation: " + _
            windowsIdentity.GetCurrent().Name + ".")
    
        ' Stop impersonating the user.
        impersonationContext.Undo()
    
        ' Check the identity.
        WriteLine("Name of the identity after performing an Undo on the " + _
            "impersonation: " + windowsIdentity.GetCurrent().Name + ".")
    End Sub

    Da dies aber Win32 Code ist und dieser als unverwalteteter Code gilt, bin ich auf der Suche nach einer anderen Möglichkeit.
    Wie so ? In diesem Fall wird unverwaltete code so zu sagen im verwaltetem Oberfläche gepackt. Über DLL Import und Marshalling. (wenn du so machst).

    Ist eine Manipulation des eigenen WindowsIdentity-Object mit den Eingaben des anderen USers möglich?
    Du brauchst sein Token


    Kann die Verwendung von nichtverwaltetem Code irgendwie abgesichert werden?
    Er ist abgesichert über Platform Invoke !

    Der Kompiler importiert die Funktion die unter DLLImport steht in MSIL
    (Microsoft Intermediate language)
    Runtime findet diese Info undnuztz Marshal Klasse um die Daten zwischen Managed und Unmanaged Code zu übergeben
    Zuletzt editiert von vadym voytas; 12.02.2010, 01:03.
    Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

    Comment


    • #3
      Originally posted by go_1 View Post
      Wie kann eine Manipulation der verwendeten advapi32.dll verhindert werden?

      Herzlichen Dank,
      go.
      Man kann über Process.Start (ProcessStartInfo.UserName)
      ein Process im Name den anderen Benutzer starten
      Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

      Comment

      Working...
      X