2011-01-07 17 views
3

Ich habe eine ASP.NET-Anwendung, die einen WMI-Aufruf an ein Remote-System ausführt. Die Anwendung Web.config enthält < identity impersonate = "true" > und < authentication mode = "Windows" > Optionen, die, wie ich verstehe, die Ausführung des Anwendungscodes im Namen des Anwendungsbenutzers erzwingen sollte.WMI-Zugriff verweigert Fehler beim Abfragen von Remotecomputer von ASP.NET

Das Problem ist, dass ich bekomme "Zugriff verweigert" -Fehler, trotz der Tatsache, kann ich erfolgreich die meine WMI-Anfrage von PowerShell-Konsole auf dem gleichen Host unter dem gleichen Benutzer auf den betreffenden Remote-Server ausführen.

// this doesn't work 
ManagementScope scope = new ManagementScope(); 
scope.Path.NamespacePath = "root\\virtualization"; 
scope.Path.Server = "vs01"; 
scope.Connect(); // <-- here comes exception 

# this works just fine 
Get-WmiObject -Namespace 'root\virtualization' -Class Msvm_ComputerSystem -ComputerName vs01 

Dumping HttpContext.Current.User.Identity.Name, System.Security.Principal.WindowsIdentity.GetCurrent(). Name vorschlagen System.Threading.Thread.CurrentPrincipal.Identity.Name Eigenschaften, die Identitätswechsel wie erwartet funktioniert .

Ideen? Könnte das Problem eine Art von .NET- oder IIS-Sicherheit sein?

Antwort

4

Sie müssen einen Domänenadministrator haben, der die Delegierung für Ihren Webservercomputer aktiviert. Dies ist eine Sicherheitsfunktion von Kerberos. Standardmäßig darf ein zwischengeschalteter Server (in diesem Fall Ihr Webserver) den Identitätswechselkontext eines Clients nicht an den fernen Server übergeben, es sei denn, ihm wurde die Delegierungsberechtigung erteilt. Wenn Sie dies nicht tun, sieht der Remote-Zielserver die Anforderung als anonymer Benutzer ... wenn dieser ordnungsgemäß gesichert wird, wird der Zugriff verweigert.

Beachten Sie, dass es eine allgemeine Richtlinie ist, nur einem Zwischenserver das Delegieren auf bestimmte Zielserver zu gestatten (als eingeschränkte Delegierung bezeichnet). Wenn Ihre Webanwendung WMI auf einem beliebigen Server in Ihrem Netzwerk aufrufen kann, liegt möglicherweise ein Problem vor. Sprechen Sie mit Ihrem Domain-Administrator.

+0

Vielen Dank, Delegation Berechtigungen teilweise geholfen. Jetzt kann ich einen Anruf tätigen, aber ich muss meine Zugangsdaten eingeben, wenn ich auf die Seite mit dem WMI-Code zugreife. –

+0

UPDATE: IE funktioniert gut. Firefox und Chrome scheinen anders zu funktionieren. Ich schätze, sie liefern keine vollständigen Kerberos-Informationen, die für die Delegierung erforderlich sind. –

+1

IE implementiert das SPNEGO-Authentifizierungsprotokoll (Kerberos/NTLM), mit dem Sie sich einmalig anmelden können. Ich glaube nicht, dass Firefox/Chrome dies standardmäßig implementiert. Was Sie also sehen, ist die NTLM Pass-Through-Authentifizierung. Dies ist ein Grund, um IE für interne Apps in einer Windows-Domäne zu standardisieren. – DSO

Verwandte Themen