04 Feb
2006

Medium Trust Level bei ASP.NET 2.0 und configSections, section

 

In einer ASP.NET 2.0 Anwendung wollte ich den Trust Level ein wenig herunterschrauben [1], denn Full-Trust war sicher nicht notwendig. Und was nicht notwendig ist sollte man auch nicht zu Verfügung stellen. Von den Standard Trust Leveln passte Medium am besten. Einen eigenen wollte ich erstmal nicht erstellen. Also mal eben auf Medium-Trust umgestellt, dazu in der [b]Web.config[/b] [xml] [/xml] eingetragen und fertig. Nun sichert mir die Code-Access-Security von .NET das die Anwendung nur das darf was in dem Trust-Level vorgesehen ist [2]. Somit verhindert man z.B. mal eben das eine Anwendung [i]ausversehen[/i] in fremde Verzeichnisse schreiben kann. Ok, alles eingetragen ... gestartet ... nichts lief mehr ... schön :) Es wurde direkt eine Exception geworfen, diese gab einen groben Hinweis auf die Konfiguration im Zusammenhang mit den Rechten. [quote][b]Description:[/b] The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file. [b]Exception Details:[/b] System.Security.SecurityException: Request for the permission of type 'System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' failed.[/quote] Und der Stacktrace beinhaltete auch nur 4 Einträge ... So, nun verwende ich in der Anwendung diverse Assemblies die eine eigene [b]<configSections />[/b] haben. Diese alle Ausgeklammert und schon gab es weitere Lebenszeichen in der Anwendung. Zwar lief sie nicht richtig (was an den fehlenden Assemblies lag). Aber immerhin ein Hinweis wo die Probleme zu suchen sind. Nach ein wenig lesen in den MSDN und überprüfen der Assemblies mit [b]permcalc[/b] war ich auch nicht viel schlauer. Google brachte auch keine Lösung zu Tage. Erst das debuggen der Assemblies brachte mir bei der Exception den richtigen Hinweis das man in den entsprechenden Sektion doch [b]RequirePermission= False[/b] setzen sollte. Also in die Web.config und dort zeigte mir die Intellisense nirgendwo was an auch nur [b]RequirePermission[/b] ähnelt. Also wieder in die MSDN geblättert und [b]SectionInformation[/b] entdeckt, dort gibt es eine RequirePermission Eigenschaft. Setzt man RequirePermission auf false dann wird auch Medium Trust (oder weniger) Level Anwendung die Verwendung von eigenen ConfigurationSection-Handler ermöglicht. Denn eigentlich sind diese nur für Full- oder High-Trust Level Anwendungen möglich. Eine entsprechende Überprüfung auf des Recht findet dann einfach nicht statt. SectionInformation beschreibt das [b]<section />[/b] Tag innerhalb von [b]<configSections />[/b]. Diese also einfach entsprechend erweitert. [xml]
[/xml] Danach lief die Anwendung wieder. Yeah! Ergo, bei eigenen Konfigurationsbereichen ein [b]requirePermission="false"[/b] eintragen und schon geht's auch mit weniger Vetrauen in der Anwendung. Aber requirePermission ist wieder einer dieser Parameter die im Schema der .config-Dateien vergessen worden ist, und somit die Intellisense sich darüber ausschweigt. Und was diese nicht von sich gibt, existiert ja auch nicht :( Wenn ich nun sehen das keine Probleme in diesem Bereich bei dem von Thomas Bandt und mir entwickelten UrlRewrite-Module [4] in der freien Wildbahn auftreten. So scheinen doch wieder alle Entwickler - außer mir - über den Parameter im Bilde zu sein, oder es laufen wohl der großteil der Server mit Full- oder High-Trust Level - An die eigene Nase fass -.
[1] [url=http://msdn.microsoft.com/library/en-us/dnpag2/html/paght000020.asp]How To: Use Medium Trust in ASP.NET 2.0[/url] [2] [url=http://msdn.microsoft.com/library/en-us/dnpag2/html/paght000017.asp]How To: Use Code Access Security in ASP.NET 2.0 -> Trust Level Summary[/url] [3] [url=http://der-albert.com/archives/14-Ein-XmlMembershipProvider-sowie-XmlRoleProvider-fuer-ASP.NET-2.0.html]DerAlbert.XmlSecurityProvider[/url] [4] [url=http://www.urlrewriting.netl]UrlRewritingNet[/url]
Der Eintrag ist mir etwas Wert
 
Comments have been closed on this topic.