Frage

Ich habe eine App, die Identitätswechsel durchgehend verwendet hat. Aber wenn ein Benutzer als Administrator angemeldet, ein paar Betrieb verlangen, daß sie auf den Server selbst zu schreiben. Nun, wenn diese Benutzer Rechte haben nicht auf dem tatsächlichen Server (manche nicht) wird es nicht zulassen, sie schreiben.

Was ich will, ist, tun Identitätswechsel deaktivieren für nur ein paar Befehle.

Gibt es eine Möglichkeit, so etwas zu tun?

using(HostingEnvironment.Impersonate.Off())
  //I know this isn't a command, but you get the idea?

Danke.

War es hilfreich?

Lösung

Stellen Sie sicher, dass die Anwendung Pool die entsprechenden Rechte haben, die Sie benötigen.

Wenn Sie dann auf die Anwendungspoolidentität zurückkehren wollen ... den folgenden:

private WindowsImpersonationContext context = null;
public void RevertToAppPool()
{
    try
    {
        if (!WindowsIdentity.GetCurrent().IsSystem)
        {
            context = WindowsIdentity.Impersonate(System.IntPtr.Zero);
        }
    }
    catch { }
}
public void UndoImpersonation()
{
    try
    {
        if (context != null)
        {
            context.Undo();
        }
    }
    catch { }
}

Andere Tipps

Ich bin nicht sicher, ob dies der bevorzugte Ansatz ist, aber wenn ich dies tun wollte ich new'd auf eine Instanz eines Windows und rief die Impersonate Methode. Auf diese Weise kann nachfolgenden Code einen anderen Windows-Benutzer zu verkörpern. Es gibt einen WindowsImpersonationContext dass eine hat < a href = "http://msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.undo.aspx" rel = "nofollow noreferrer"> Rückgängig Verfahren, das den Identitätswechsel Kontext kehrt wieder zurück.

Sie können die Authentifizierung für die Seite deaktivieren und dann manuell den authentifizierten Benutzer während der Rest des Codes ausgeben.

http://support.microsoft.com/kb/306158

Dies hat einen Verweis auf diesen letzten Teil, aber im Grunde imitieren Sie User.Identity

Dies bedeutet, dass Sie am Anfang jeder Aufruf der Seite zum Imitieren haben, schalten Sie es aus, wenn Sie es weg müssen, dann wieder auf, wenn Sie fertig sind, aber es sollte eine praktikable Lösung sein.

Ich habe gerade am Ende geben die Ordner-Berechtigungen schreiben „authentifizierte Benutzer“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top