Steuern Sie einen Dienst auf einem Remote-Server von IIS

Bitte beachten Sie: In jedem Schritt, den ich unten beschreibe, bin ich als das gleiche Domänenbenutzerkonto angemeldet.

Ich habe eine Webanwendung, die einen Dienst auf einem Remotecomputer steuert (über ServiceController ). Wenn ich mich remote mit der Website verbinde und versuche, den Dienst zu steuern, erhalte ich eine InvalidOperationException: Zugriff verweigert.

Ich weiß, dass CAN funktioniert, denn wenn ich vom Webserver aus eine Verbindung zur Website herstelle (Remote-Desktop in, logge mich als Domänenbenutzer ein und öffne dann die Webseite), funktioniert es wie erwartet.

Ich habe IIS und ASP.NET so konfiguriert, dass Windows-Authentifizierung und Identitätswechsel erforderlich sind. Ich protokolliere den Prinzipal des aktuellen Threads, wenn dies fehlschlägt, und ich sehe, dass der Thread unter meiner Identität ausgeführt wird, unabhängig davon, ob ich eine Remoteverbindung oder eine Verbindung zum Server selbst herstelle.

Ich habe versucht, IIS zu zwingen, Kerberos-Authentifizierung, NTLM-Authentifizierung und beides gleichzeitig zu verwenden; ob mein Prinzipal seinen AuthenticationType als "Negotiate" oder "NTLM" meldet, spielt keine Rolle. Keiner von ihnen funktioniert, wenn ich mich remote verbinde (von meinem lokalen Rechner)

Eine weitere seltsame Sache ist, dass wenn ich debuggen von meinem lokalen Rechner/Verbindung mit dem Remote-Server, es jedes Mal funktioniert! Aber ich bin nicht Debuggen, es scheitert jedes Mal!

Was zum Teufel könnte hier los sein?

0

2 Antworten

"Eine weitere seltsame Sache ist, dass, wenn ich von meinem lokalen Rechner debugge/Verbindung mit dem Remote-Server, es jedes Mal funktioniert! Aber ich bin nicht Debuggen, es scheitert jedes Mal!"

Das ist ein deutlicher Hinweis darauf, dass Sie Berechtigungsprobleme haben. Wenn Sie den Debugger ausführen, der als angemeldeter Benutzer ausgeführt wird, wird der Debugger, wenn Sie nicht debuggen, als der ausgeführt, den IIS verwenden soll (standardmäßig NETWORK SERVICE). Versuchen Sie (vorübergehend!), Den anonymen Zugriff mit Ihrem Domänenkonto als Benutzer zu aktivieren und sehen Sie, ob das funktioniert. Wenn dies der Fall ist, bedeutet dies, dass Ihr IIS nicht korrekt eingerichtet ist, um sich zu imitieren (und wahrscheinlich als NETWORK SERVICE ausgeführt wird).

Berechtigungen in IIS können ein wenig c h sein, um eine Feinabstimmung zu ermöglichen ... Viel Glück!

P/S: Dies sieht eher nach einer Netzwerkverwaltungsfrage als nach einer Programmierungsfrage aus (siehe https://stackoverflow.com/questions/321618/stackoverflow-is-for-programming-questions-here-are-some-better-forums-for-your#321756 )

0
hinzugefügt
Nun, ich weiß, es ist eine Erlaubnis Frage. Ich habe getan, was Sie vorgeschlagen haben, aber es hat keinen Unterschied gemacht. Ich habe auch Digest-Authentifizierung versucht, aber das war auch ein Nein.
hinzugefügt der Autor Will, Quelle

Ihr Szenario ist Delegierung und kein Identitätswechsel. Delegation ist schwer zu erreichen und hängt von vielen Dingen ab, die richtig gemacht werden.

A place to start would be Kerberos authentication and troubleshooting delegation issues

David Wang blog is a very useful resource on thous issues.

0
hinzugefügt
Das ist es! Vielen Dank!
hinzugefügt der Autor Will, Quelle