Sharepoint:是不是可以自动部署自定义 CAS 策略?
Posted
技术标签:
【中文标题】Sharepoint:是不是可以自动部署自定义 CAS 策略?【英文标题】: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。
有没有办法自动化这个?例如,来自某个功能?
致以诚挚的问候, 欧文·范德瓦克
【问题讨论】:
【参考方案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 文件中。
【讨论】:
以上是关于Sharepoint:是不是可以自动部署自定义 CAS 策略?的主要内容,如果未能解决你的问题,请参考以下文章
使用 SPFx 扩展将自定义操作部署到 SharePoint 2019 列表
将自定义 Web 部件添加到页面 SharePoint 2013 c# csom
在 Teams 中显示来自另一个租户 SharePoint Online 的页面。我想使用自定义 iFrame。是不是可以通过对用户进行身份验证