Identitätswechsel der aktuelle Benutzer mit WindowsImpersonationContext Zugriff auf Netzwerk-Laufwerk
Brauche ich Zugriff auf eine remote-Laufwerk aus einer Web-App. Das Laufwerk ist nicht zugänglich ASP.NET Prozess, so möchte ich, um die Identität des aktuellen Benutzers für die Anfrage.
Sah ich einige grundlegende Beispiele für die Verwendung von WindowsImpersonationContext, und haben versucht, die folgenden.
WindowsImpersonationContext impersonationContext = null;
try
{
impersonationContext = ((WindowsIdentity)User.Identity).Impersonate();
file.SaveAs(filePath);
}
finally
{
if (impersonationContext != null)
{
impersonationContext.Undo();
}
}
Ich bin noch immer eine access denied exception.
Habe ich gelesen, ein bisschen was über LogonUser
, aber soweit ich sagen kann, benötigen Sie einen Benutzernamen und ein Kennwort zum abrufen der Anmeldeinformationen aus. Ich bin nicht auf der Suche zu sich als einem anderen bestimmten Benutzer nur der aktuelle Benutzer (wer soll Zugriffsrechte auf die Datei zu speichern), so dass ich glaube nicht, dass ich wirklich brauchen, die LogonUser
API.
Hat jemand eine Idee was mir fehlt? Sollte der obige code funktioniert?
Ich würde auch beachten, dass darunter
<identity impersonate="true" />
nicht funktioniert, aber einschließlich
<identity impersonate="true" userName="myName" password="myPassword" />
in der web.config
lässt mich in. Ich habe gesehen, ein paar Leute Fragen, Fragen, warum dieses ist, aber ich habe keine Erklärung. Ich wundere mich, wenn es angeschlossen ist, zu meinem problem aber.
IIS für die Verwendung von Fenster-Identität. Dank
InformationsquelleAutor fearofawhackplanet | 2010-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schrieb ich eine helper-Klasse, die es macht:
Können Sie es verwenden, wie:
Weitere Erläuterungen und Beispiele finden Sie hier :
Die Identität CurrentUser vom SYSTEM
Ich habe schlug meinen Kopf seit 2 Tagen an diesem problem! Jeder Aufruf der Active Directory-stürzt ab bei der Verwendung von Chrome. Ihre Klasse hat es geschafft! Funktioniert wie einen Charme und einfach zu bedienen! DANKE!!!!
Hat Super funktioniert. Tolle Sachen.
InformationsquelleAutor Amir Yonatan
Du bist wahrscheinlich in eine Personifizierung vs. Delegation Problem. Wenn Sie einen Benutzer zu Imitieren, können Sie den Zugriff auf lokale Ressourcen wie Benutzer, aber keine remote-Ressourcen. Mit der Delegation, können Sie den Zugriff auf remote-Ressourcen zu. Versuchen Sie Folgendes:
<authentication mode="Windows" />
in Ihrer Website.config, um sicherzustellen, ASP.NET Prozesse, die Windows-Authentifizierung (dies sollte nur bei Classic pipeline mode).<identity impersonate="true" />
sollte genug sein.Die andere Sache, die Sie möglicherweise tun müssen, ist sicherzustellen, dass die dem Konto ausgeführt wird der AppPool ist erlaubt, zu handeln, wie ein Delegierter.
InformationsquelleAutor Matthew Abbott