Es gibt einen kleinen aber sehr wichtigen Unterschied zwischen der ASP-.NET UrlAuthorization und der IIS 7.0 URL Authorization.
Gemeinsam ist, dass beide Module über das IIS7.0, bzw. über das IIS 7.5 Setup installiert werden. Die IIS7 URL Authorisation wird installiert wenn man das "URL Authorization" feature in dem IIS 7.0 Setup User Interface auswählt... ...siehe Bild rechts.
Die URL Authorisation über ASP.NET ist und war immer in dem System.Web.Security.UrlAuthorizationModule implementiert und wird erst dann installiert wenn ASP.NET auf dem IIS7 konfiguriert wird. Auch die entsprechende configuration section lautet weiterhin system.web/authorization
<add type="System.Web.Security.UrlAuthorizationModule"
name="UrlAuthorization"
precondition="managedHandler" />
Das IIS 7.0 URL Authorization module ist in dem globalem Modul urlauthz.dll implementiert:
<add name="UrlAuthorizationModule"
image="%windir%\System32\inetsrv\urlauthz.dll" />
Die Einstellung "managedHandler precondition" im ASP.NET UrlAuthorization Module ist wichtig. Sie gibt an, da das Authorisations Modul nur in der Request Pipeline verarbeitet wird, wenn der Code der den Request verarbeitet auch durch einen Managed Handler verarbeitet wird, was ja typischer weise in den klassischen ASP.NET 2.0 Plattfomen mit *.aspx oder .ASMX passiert.
Die URL Authorisation des IIS7 die über die urlauthz.dll läuft, wirkt auf alle Requests! (Stichwort Integrierte Requestpipeline im IIS7)
Die "managedHandler precondition" Einstellung vom ASP.NET Modul kann entfernt werden. Sie ist im standard vorhanden um Perfomanceeinbußen vorzubeugen, die dann erkauft werden müssen, wenn jeder tatsächlich Request (beispielsweise an HTML-Dateien oder Bilddateien) tatsächlich durch durch die URL Authorisation überprüft, bzw. im managed code verarbeitet werden soll.
... macht also Sinn, wenn man Bilder und andere Resourcen auch durch dieses Authorisationsverfahren schützen will.