Frage

Ich kann nicht auf die richtige Kombination von IIS / ASP.NET-Einstellungen zu stolpern scheint folgendes zu erreichen:

  1. Alle Benutzer auf eine interne Domäne sollte IIS-Website zugreifen können (w / NTLM-Authentifizierung) und die ASP.NET-Anwendung sollten Sie den Benutzernamen des aktuellen Benutzers zu erhalten fähig sein (auch bekannt als < strong> wird der Benutzer als er authentifiziert ).
  2. Der Lauf ASP.NET-Anwendung sollte auf ausführen, bestimmte Aktionen unter einem Administrator-Konto der Lage sein. Zum Beispiel kann ein Active Directory zu ändern oder Dateien beschränkt Stellen zu schreiben.

Sie können sich wahrscheinlich vorstellen, aber der Punkt der Anwendung ist in der Lage sein, „normale“ Anwender machen spezifische „Administrative“ Änderungen über die Web-Anwendung zu lassen. Zugleich sollte die Änderung mit dem „normalen“ Benutzer-Konto angemeldet sein, so will ich nicht die authentifizierten Benutzer der Anmeldeinformationen verlieren.

Suche nach den spezifischen Einstellungen in IIS6 # 1 zu erreichen (alle Benutzer in der Domäne auf die Website zu bekommen und wie sie selbst authentifiziert werden), zusammen mit dem Code für # 2.

War es hilfreich?

Lösung

Es gibt atleast zwei Möglichkeiten:

Gemeinsam für beide:

  • Ihre IIS-Einstellung auf Windows-Authentifizierung festgelegt werden sollte.
  • Die Identität des Benutzers kann von der Httpcontext gelesen werden.

Option 1:

  • Stellen Sie Identitätswechsel = false
  • Stellen Sie die Identität des Anwendungspools zu einem Benutzer, die das Recht machen AD Änderungen
  • hat
  • Fügen Sie den oben Benutzer zur Gruppe IIS_WPG

Option 2:

  • Wenn die AD Änderungen vornehmen, die Identität des Threads, dass ein Benutzer festgelegt, die die AD Änderungen
  • zu machen ist erlaubt

Für die Option 2, hier ist ein Codebeispiel, das impersonate Benutzer verwendet:

http://msdn.microsoft.com /en-us/library/system.security.principal.windowsimpersonationcontext.aspx

Andere Tipps

Aus sicherheitstechnischer Sicht wäre der beste Ansatz sein, um alle Verwaltungsvorgänge in den eigenen Web-Service zu trennen, die die Authentifizierung des Fall sind, sondern Identitätswechsel nicht. Ihre Normalpart der Website durchführen würde, die Verwaltungsvorgänge durch den Web-Service aufrufen, wie jeder andere Client, auch wenn ein localhost Anruf ist.

Auf diese Weise kann Trennung zwischen dem normalen AppPool erreichen (das nimmt die Identität) und die priviledged AppPool (die administrativen).

Schließlich ist dies vielleicht Haarspalterei, aber es sollte die Kerberos-Authentifizierung, nicht NTLM, da NTLM für nicht zulässt, dass Delegierung und Ihre 'normale' Anwendung muss für die Delegierung aktiviert werden, wenn es greift auf alles außerhalb der lokalen IIS-Host.

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