Announcement

Collapse
No announcement yet.

WebControls.TreeView ohne anonyme Windows-Authentifizierung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WebControls.TreeView ohne anonyme Windows-Authentifizierung

    Moin,
    ich verwende im Intranet als Navigation das WebControl (WebControls.TreeView) von Microsoft (mit TreeNodeSrc=treenode.xml, auf die xml Datei hat "jeder" Zugriff und sie befindet sich im gleichen Verzeichnis wie die nav.aspx Datei).
    Das funktioniert auch solage im IIS die Windows-Authentifizierung für das Web auf anonyme Anmeldung eingestellt ist. Wenn ich die Windows-Authentifizierung für die anonyme Anmeldung deaktiviere bekomme ich nachfolgende Fehlermeldung:

    Ungültige Daten auf Stammebene. Zeile 1, Position 1.
    Beschreibung: Beim Ausführen der aktuellen Webanforderung ist ein unverarbeiteter Fehler aufgetreten. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

    Ausnahmedetails: System.Xml.XmlException: Ungültige Daten auf Stammebene. Zeile 1, Position 1.

    Quellfehler:

    Beim Ausführen der aktuellen Webanforderung wurde einen unbehandelte Ausnahme generiert. Informationen über den Ursprung und die Position der Ausnahme können mit der Ausnahmestapelüberwachung angezeigt werden.

    Stapelüberwachung:
    [XmlException: Ungültige Daten auf Stammebene. Zeile 1, Position 1.]
    System.Xml.XmlTextReader.ParseRoot() +295
    System.Xml.XmlTextReader.Read() +127
    Microsoft.Web.UI.WebControls.TreeView.ReadXmlSrc(S tring TreeNodeSrc, String TreeNodeXsltSrc, String strOuter) +136
    Microsoft.Web.UI.WebControls.TreeView.ReadTreeNode XmlSrc() +80
    Microsoft.Web.UI.WebControls.TreeView.OnInit(Event Args e) +90
    System.Web.UI.Control.InitRecursive(Control namingContainer) +235
    System.Web.UI.Control.InitRecursive(Control namingContainer) +179
    System.Web.UI.Page.ProcessRequestMain() +171

    Die Daten in der XML Datei sind wohlgeformt.
    Kann mir jemand weiterhelfen?

  • #2
    Hallo,

    wenn <i>aspnet_isapi.dll</i> den Request-Aufruf an <i>aspnet_wp.exe</i> weiterleitet, überträgt es auch den vom IIS erhaltenen Access Token an ASP.NET. Dieser Access Token sieht je nach Konfiguration unterschiedlich aus: <br>
    a) Anonymer Zugriff: ISUR_machinename <br>
    b) Authentifizierter Zugriff: Benutzername<br>
    Bevor ASP.NET diesen Request-Aufruf weiterverarbeitet, wird zuerst geprüft, ob das erhaltene Access Token für die angeforderte Ressource die ACL Authorization (Zugriffsprüfung durch das NTFS-Dateisystem) besteht. ASP.NET arbeitet diese Prüfung in jedem Fall ab, auch wenn die ASP.NET-Anwendung die Impersonation aktiviert hat. War diese Prüfung erfolgreich, so wird das Access Token der ASP.NET-Anwendung zur Verfügung gestellt, so dass die Anwendung über die Impersonation eine benutzerabhängige Zugriffsberechtigung nutzen kann.

    Greift die ASPX dann auf eine andere Datei (.XML) zu und ist die Impersonation nicht aktiv, so erfolgt der Zugriff auf diese externe Datei unter dem ASPNET-Benutzerkonto. Der Zugriff ist also auch dann erfolgreich, wenn der Benutzer selbst für diese externe Datei keine ACL-Berechtigung (NTFS-Dateisystem) hat. Wenn die Zugriffsprüfung in jedem Fall für alle Dateien gelten soll, muss die Impersonation aktiviert werden oder die ASP.NET-Anwendung muss zur URL Authorization greifen.

    Ich würde mir daher zuerst ansehen, unter welcher Sicherheitskonfiguration die ASP.NET-Anwendung läuft und welche NTFS-Zugriffsrechte die Datei <i>treenode.xml</i> hat. Die Fehlermeldung "..Zeile 1, Position 1..." deutet darauf hin, dass in der aktuellen Konfiguration der Dateiinhalt nicht gelesen werden darf

    Comment


    • #3
      Hallo, Herr Kosch,

      vielen Dank für die Infos. Nach Prüfung haben sich keine Änderungen ergeben.
      Auf die xml Datei hat "jeder" Zugriff.
      Andere Xml Dateien im gleichen Verzeichnis lassen sich ohne weiters lesen.
      Beim löschen der treenode.xml Datei wird weiterhin oben beschriebener Fehler angezeigt.
      Die Sicherheitskonfiguration ist in der Web.config wiefolgt eingerichtet:
      <authentication mode="Windows" />
      <identity impersonate="true" />

      <authorization>
      <deny users="?" />
      </authorization>
      die System.config:
      <processModel enable="true" timeout="Infinite" idleTimeout="Infinite" shutdownTimeout="0:00:05" requestLimit="Infinite" requestQueueLimit="5000" restartQueueLimit="10" memoryLimit="60" webGarden="false" cpuMask="0xffffffff" userName="machine" password="AutoGenerate"

      Da das Intranet ansonsten ohne Probleme funktioniert, habe keinen Plan außer, es gibt noch externe Komponenten des Microsoft WebControls.

      Haben Sie noch eine Idee

      Comment

      Working...
      X