【问题标题】:Sharepoint: Is it possible to automate the deployment of a custom CAS policy?Sharepoint:是否可以自动部署自定义 CAS 策略?
【发布时间】:2010-05-04 08:42:37
【问题描述】:

我正在寻找一种在 SharePoint 中自动部署自定义 CAS 策略的方法。

我想要达到的目标如下:

由我们的构建服务器(使用密钥)构建和签名的所有程序集都应在“高于正常”信任级别下在 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>

而且效果很好。但是,我们有几个巨大的共享点农场,上面运行着许多应用程序。我想避免手动编辑所有策略文件以包含此 xml sn-p。

有没有办法自动化这个?例如,来自某个功能?

致以诚挚的问候, 欧文·范德瓦克

【问题讨论】:

    标签: sharepoint file policy cas


    【解决方案1】:

    希望您熟悉 .wsp 文件。这是将任何东西部署到服务器场的标准方法。您还可以通过 wsp 文件部署 CAS 策略条目。 (也许您只想为您的 cas 策略创建一个 wsp 文件)。 wsp 文件与 cab 文件相同,只是重命名。在 wsp 文件中包含 manifest.xml,您可以在其中定义要对 CAS 文件应用的更改。这样做的好处在于它可以通过卸载 WSP 来恢复。我已经看到了几种部署 CAS 策略的不同方法,包括将自定义策略文件作为 wsp 的一部分,并且它像任何其他文件一样被部署。

    您应该谷歌 wsp cas policy manifest.xml 以获取更多教程。

    希望这会有所帮助..

    【讨论】:

      【解决方案2】:

      这是我为自动部署 WebPart 的 CAS 策略所做的工作:

      在我的 .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,但我不记得具体在哪里)

      要将 Web 部件解决方案部署到 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 策略。没有它,它们将不会被添加到 SharePoint 的 web.config 文件中。

      【讨论】:

        猜你喜欢
        • 2010-11-18
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 2010-10-22
        • 1970-01-01
        • 2016-01-04
        • 2017-02-13
        • 2011-07-10
        相关资源
        最近更新 更多