Paolo Pialorsi

SOA, Workflow Foundation (WF), Windows Communication Foundation (WCF) e le Architetture Distribuite

ASP.NET Code Access Security e SharePoint 2007

L'altro giorno durante un training che stavo tenendo in Microsoft a proposito di SharePoint 2007 ho approfondito il tema della Code Access Security in ambito ASP.NET.

Ho notato che vi era molto interesse per l'argomento, per cui segnalo un link di documentazione che in particolare evidenzia i permessi disponibili nei vari livelli di trust nativi di ASP.NET. SharePoint, sin dalla versione 2003, si basa su questi concetti definendo dei livelli di trust personalizzati. Con MOSS2007/WSS3 e il deployment tramite solution WSP è ora possibile automatizzare le politiche di deployment delle web part e dei controlli in generale, senza dover più modificare a mano i file .config, ma semplicemente dichiarando nel manifest di deployment i permessi personalizzati che si richiede di configurare. In pratica nel manifest.xml del file di solution possiamo usare una sintassi come la seguente:

<?xml version="1.0" encoding="utf-8" ?>
<Solution
    SolutionId="DEB5DCFC-3AFA-4161-8EFF-8DDABE5C70DD"
    xmlns="http://schemas.microsoft.com/sharepoint/" >
    <FeatureManifests>
        <FeatureManifest Location="WebPartWithCAS\Feature.xml" />
    </FeatureManifests>
    <CodeAccessSecurity>
        <PolicyItem>
            <PermissionSet class="NamedPermissionSet" version="1"
              Description="WebPartWithCAS PermissionSet">
                <IPermission class="AspNetHostingPermission" version="1"
                   Level="Minimal"/>
                <IPermission class="SecurityPermission" version="1"
                   Flags="Execution" />
                <IPermission version="1" Unrestricted="True"
                   class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
            </PermissionSet>
            <Assemblies>
                <Assembly Name="DevLeap.MOSS2007.WebPartWithCAS" Version="1.0.0.0" PublicKeyBlob="0024000004800000940000000602000000240000525341310004000001000100ed03dd005a4576e00550d75c2329f114b2fe2157e0e3262cb11f7f1faee5e2b10320c9d24c317a6836e6eda1a2e11fafb6ae7d26fa47e5f230ed943039ebe5b43652502467e5724403b7855ad8e730f350d400785da528bb3683c1c77a61b20498176248f2732b58612cb5de4f519ad574ae098d574001b90e5e8844a8dd7cd1" />
            </Assemblies>
        </PolicyItem>
    </CodeAccessSecurity>
    <Assemblies>
        <Assembly Location="DevLeap.MOSS2007.WebPartWithCAS.dll"
                  DeploymentTarget="WebApplication" >
            <SafeControls>
                <SafeControl Assembly="DevLeap.MOSS2007.WebPartWithCAS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3ba0d48cf1794abd"
                    Namespace="DevLeap.MOSS2007.WebPartWithCAS"
                    TypeName="*" Safe="True" />
            </SafeControls>
        </Assembly>
    </Assemblies>
</Solution>

 

Ecco in questo download un esempio di WebPart che si installa configurando i permessi corretti. La stessa WebPart, con le impostazioni di default di MOSS2007/WSS3 potrebbe funzionare solo se inserita nella GAC (diventando FullTrust, che quasi sempre è troppo!) oppure andando a configurare a mano un livello di Trust ... perdendo tempo e pazienza :-).

Ovviamente l'installazione della solution e l'attivazione della feature deve avvenire per mano di un utente autorizzato a farlo.

Posted: nov 11 2007, 04.37 by paolo | with no comments
Filed under: , ,