Sharepoint: возможно ли автоматизировать развертывание пользовательской политики CAS? - PullRequest
1 голос
/ 04 мая 2010

Я ищу способ автоматизации развертывания настраиваемой политики CAS в SharePoint.

Чего я хотел бы добиться, так это:

Все сборки, которые были собраны и подписаны нашим сервером сборки (с секретным ключом), должны выполняться в SharePoint с уровнем доверия «выше обычного».

Теперь я могу вручную редактировать файлы политики cas, добавив что-то вроде этого:

        <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="MyPermissionSet" Name="[My Company public key]" Description="Grants all ">
          <IMembershipCondition class="StrongNameMembershipCondition" version="1" PublicKeyBlob="[public key goes here]" />
        </CodeGroup>

И это прекрасно работает. Однако у нас есть несколько огромных ферм sharepoint, на которых запущено много приложений. Я хотел бы избежать необходимости вручную редактировать все файлы политики, чтобы включить этот фрагмент XML.

Есть ли способ автоматизировать это? Например, из фича?

С уважением, Эрвин ван дер Валк

Ответы [ 2 ]

1 голос
/ 04 мая 2010

Это то, что я сделал для автоматизации развертывания политик CAS моего WebPart:

Внутри моего .wsp файла у меня есть Manifest.xml файл с таким содержанием:

<?xml version="1.0" encoding="utf-8" ?>
<Solution SolutionId="0C006FE3-919D-4a2a-9CF0-FEA66A0A91E4" xmlns="http://schemas.microsoft.com/sharepoint/" >
    <Assemblies>
        <Assembly Location="MyWebPart.dll" DeploymentTarget="WebApplication">
            <ClassResources>
                <ClassResource Location="MyWebpart_log.config" />
                <ClassResource Location="combo.css" />
                <ClassResource Location="combo.js" />
                <ClassResource Location="img/arrow.png" />
                <ClassResource Location="img/coordination.gif" />
                <ClassResource Location="img/dt-arrow-dn.png" />
                <ClassResource Location="img/dt-arrow-up.png" />
                <ClassResource Location="img/loading.gif" />
                <ClassResource Location="img/menu-button-arrow.png" />
                <ClassResource Location="img/spinner.gif" />
                <ClassResource Location="img/split-button-arrow.png" />
                <ClassResource Location="img/sprite.png" />
            </ClassResources>
            <SafeControls>
                <SafeControl Assembly="MyWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=017e953639e07a31"
                             Namespace="MyWebPart" TypeName="*" Safe="True" />
            </SafeControls>
        </Assembly>
        <Assembly Location="log4net.dll" DeploymentTarget="WebApplication">
            <SafeControls>
                <SafeControl Assembly="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"
                             Namespace="MyWebPart" TypeName="*" Safe="True" />
            </SafeControls>
        </Assembly>
    </Assemblies>
    <CodeAccessSecurity>
        <PolicyItem>
            <PermissionSet class="NamedPermissionSet" version="1" Name="MyWebPartPermissionSet"
                           Description="Permission set for My Web Part">
                <IPermission class="AspNetHostingPermission" version="1" Level="Medium" />
                <IPermission class="System.Net.DnsPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                             version="1" Unrestricted="true" />
                <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                      version="1" Read="$AppDir$" Write="$AppDir$" Append="$AppDir$" PathDiscovery="$AppDir$" />
                <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                    version="1" 
                    Flags="Execution" />
                <IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1" ObjectModel="True" />
                <IPermission class="Microsoft.SharePoint.Security.WebPartPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" 
                             version="1" Connections="True" />
                <IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                             version="1">
                    <ConnectAccess>
                        <URI uri=".*"/>
                    </ConnectAccess>
                </IPermission>
            </PermissionSet>
            <Assemblies>
                <Assembly Name="MyWebPart" />
            </Assemblies>
        </PolicyItem>
        <PolicyItem>
            <PermissionSet class="NamedPermissionSet" version="1" Name="Log4NetForMyWebPart"
                           Description="Permission set for Log4Net (logging library used by the My Web Part">
                <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Execution" />
                <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                        version="1" Read="$AppDir$" Write="$AppDir$" Append="$AppDir$" PathDiscovery="$AppDir$" />
            </PermissionSet>
            <Assemblies>
                <Assembly Name="log4net" />
            </Assemblies>
        </PolicyItem>
    </CodeAccessSecurity>
</Solution>

Вам нужно будет покопаться в документации MS для необходимых вам разрешений, потому что мне потребовалось некоторое время, чтобы выяснить, какие из них мне нужны.

Файл .wsp был создан с помощью команды:

cabarc -r -p N ..\MyWebPart-1.0.0.wsp *

(я скачал cabarc с веб-сайта Microsoft, но точно не помню где)

Для развертывания решения веб-части в SharePoint я использую следующие команды:

cd C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\bin

stsadm.exe -o addsolution -filename MyWebPart-1.0.0.wsp

stsadm.exe -o deploysolution -name MyWebPart-1.0.0.wsp -immediate -allcontenturls -allowCasPolicies

stsadm.exe -o execadmsvcjobs

Параметр allowCasPolicies необходим, поскольку решение содержит политики CAS. Без этого они не будут добавлены в файл web.config SharePoint.

1 голос
/ 04 мая 2010

Надеюсь, вы знакомы с файлами .wsp. Это стандартный способ развертывания чего-либо на ферме. Вы также можете развернуть записи политики CAS через файл wsp. (Возможно, вы захотите создать файл wsp только для вашей политики cas). WSP-файлы такие же, как CAB-файлы, только переименованы. Внутри файла wsp находится файл manifest.xml, в котором вы можете определить, какие изменения в файле CAS вы хотите применить. Самое замечательное в том, чтобы сделать это таким образом, чтобы это было обратимо путем удаления WSP. Я видел несколько разных подходов к развертыванию политик CAS, в том числе использование собственного файла политики как части вашего wsp, и он развертывается так же, как и любой другой файл.

Для получения дальнейших руководств вы должны использовать google wsp cas policy manifest.xml.

Надеюсь, это поможет ..

...