Bestimmten Code als anderer Benutzer ausführen

10/04/2008 - 09:36 von Sebastian K. | Report spam
Hallo zusammen,

das Problem hab ich zwar in einer ASP.NET Anwendung aber die ist in C#
geschrieben.

Ich möchte bestimmte Teile des Codes (wie zum Beispiel das Erzeugen
einer temporàren Datei) unter einem anderen Benutzer ausführen, als
der, der die ASP Site ausführt. Zur Zeit regel ich die Schreibrechte
über den IIS, scheint mir aber ein Sicherheitsrisiko zu sein.

Ist es möglich einen anderen, lokalen Benutzer den Code ausführen zu
lassen?

Gruß
Sebastian
 

Lesen sie die antworten

#1 Kerem Gümrükcü
10/04/2008 - 10:15 | Warnen spam
Hallo Sebastian,

ich fasse mich kurz, da ich das gerade on-the-fly schreiben kann
und es dir dennoch helfen wird.

Ist es möglich einen anderen, lokalen Benutzer den Code ausführen zu
lassen?



Ja, indem Du deinen Prozess kurzzeitig den Kontext des gewünschten
Benutzers umschaltest und in dem aktuellen Thread mit dem neuen
Kontext deinen Code ausführst und dann wieder zu dem alten
Kontext umschaltest, nach dem Du fertig bist. Als Win32 API
würde das so aussehen:

LogonUser // gewünschten benutzer anmelden
DuplicateToken //token duplizieren
ImpersonateLoggedOnUser //kontext umschalten mit dem angemeldeten benutzer
//Code ausführen den man haben mit dem neunen context
RevertToSelf //zurückschalten zu eigenem kontext

Mit C# kannst Du einige Sachen mit ohne Win32 API mache.
Schau Dir dazu in der MSDN folgende Klassen an, zu denen
es auch Beispiele gibt, die Du benutzen kannst:

WindowsIdentity
WindowsImpersonationContext

Es gibt viel Code dazu, sicher kann Dir jemand einen Link dazu geben,...
Man kann auch viel mit COM+ und anderen Techniken machen, aber
das beantwortet erst mal deine Frage,...

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen