通过自定义策略级别不工作为组件提供对 sharepoint 的完全信任

Posted

技术标签:

【中文标题】通过自定义策略级别不工作为组件提供对 sharepoint 的完全信任【英文标题】:provide assembly with full trust in sharepoint by custom policy level not working 【发布时间】:2009-05-07 07:09:03 【问题描述】:

我正在构建几个 ucercontrols。这些用户控件将托管在return of the smartpart 中。我面临的问题是我的程序集没有适当地提供足够的权限。

要实现这一点,您(基本上)有三个选择; 1. 将站点设置为完全信任级别(显然不希望这样,也不适合我。程序集不受信任) 2. 将程序集放在 gac 中(也试过了,也没用)。 3. 出于安全考虑,我希望授予我的程序集一组特殊的权利。

这可以通过自定义信任文件来完成。到目前为止,这是我想出的,但它不起作用。有人可以指出我正确的方向吗?

在安全类元素中添加了这两个子句;

<SecurityClass Name="AssemblyOne" Description="MyAssemblies.AssemblyOne, Version=1.0.0.0, Culture=neutral, PublicKeyToken=132bddbb4f2e45f2"/>
<SecurityClass Name="AssemblyTwo" Description="MyAssemblies.AssemblyTwo, Version=1.2.0.0, Culture=neutral, PublicKeyToken=e5141be41498e913" />

在命名权限集中添加了这个子句

        <PermissionSet
                class="NamedPermissionSet"
                version="1"
                Name="SPFULL"
                Unrestricted="true">
          <IPermission
                  class="AspNetHostingPermission"
                  version="1"
                  Level="Minimal"
                        />
          <IPermission
                  class="SecurityPermission"
                  version="1"
                  Flags="Execution"
                        />
          <IPermission class="WebPartPermission"
                  version="1"
                  Connections="True"
                        />
          <Assemblies>
            <Assembly Name="MyAssemblies.AssemblyOne" Version="1.0.0.0" PublicKeyBlob="002400000480000094000000060200000024000052534131000400000100010015fd63eb99fee087978556fcf698fae059d75307d1ee8e44486a349ea87843344440af9051d4434bac1d219b3a219d5f0ff50e8c0ed9eb7c07eab19d9ff0494ecaafc5ce1cb65d59ddd153b0f09790d6641af0325aaceb81c2e55c4610a1c18ae9f5a476de2282918a293726bce20aa932e06666b4e8b6885775b919a93a91a9" />
            <Assembly Name="MyAssemblies.AssemblyTwo" Version="1.2.0.0" PublicKeyBlob="00240000048000009400000006020000002400005253413100040000010001007da2bfd8e8ec53bd9caa8a5e3af2408cabd60b04c1df80bf8cbad447addaa8a7854818c77ea4f1ada3b73f33836b716999a5aac2475b22c676cedb3fe42cb2ebfba9dc20c04b1baab5a75ead6169b45d1dbef0bcbe82d5f862f954739ed100eaf41425eddd559aee883c055da038d0d8c2e998db799d6e1995ddea95a48eb0b4" />
          </Assemblies>
        </PermissionSet>

然后我在现有的“默认”代码组上方添加了这个子句;

<CodeGroup
        class="UnionCodeGroup"
        version="1"
        PermissionSetName="SPFULL"
        Name="My first Web Part"
        Description="This code group grants the my first web part full permissions.">
        <IMembershipCondition
          class="StrongNameMembershipCondition"
          version="1"              PublicKeyBlob="002400000480000094000000060200000024000052534131000400000100010015fd63eb99fee087978556fcf698fae059d75307d1ee8e44486a349ea87843344440af9051d4434bac1d219b3a219d5f0ff50e8c0ed9eb7c07eab19d9ff0494ecaafc5ce1cb65d59ddd153b0f09790d6641af0325aaceb81c2e55c4610a1c18ae9f5a476de2282918a293726bce20aa932e06666b4e8b6885775b919a93a91a9" />
        <IMembershcipCondition
          Class="StrongNameMembershipCondition"
          version="1"
          PublicKeyBlob="00240000048000009400000006020000002400005253413100040000010001007da2bfd8e8ec53bd9caa8a5e3af2408cabd60b04c1df80bf8cbad447addaa8a7854818c77ea4f1ada3b73f33836b716999a5aac2475b22c676cedb3fe42cb2ebfba9dc20c04b1baab5a75ead6169b45d1dbef0bcbe82d5f862f954739ed100eaf41425eddd559aee883c055da038d0d8c2e998db799d6e1995ddea95a48eb0b4"/>
      </CodeGroup>

谁能告诉我如何做到这一点?

【问题讨论】:

将程序集放入 GAC 时出现什么错误? SmartPart 组件当时是否也是 GAC 的? 【参考方案1】:

我看不到如何将这两个 dll 放入 GAC 或将 web.config 设置更改为 FullTrust 不起作用。你不能给它更多的权限。您确定您遇到的问题与安全有关吗?如果您只将其中一个 dll 放入 GAC,您是否有 [assembly:AllowPartiallyTrustedCallers()] 属性?

只是一个旁注: 您应该将您的权限集放在 WSP:s manifest.xml 中,这将确保 SharePoint 在部署该功能时为所有 frontweb 上的 dll 设置正确的权限。这将使管理更容易。

http://msdn.microsoft.com/en-us/library/aa543901.aspx

【讨论】:

我会试试这个并告诉你。

以上是关于通过自定义策略级别不工作为组件提供对 sharepoint 的完全信任的主要内容,如果未能解决你的问题,请参考以下文章

vue自定义全局组件并通过全局方法 Vue.use() 使用该组件

什么报表需要通过自定义报表实现

HarmonyOS之深入解析自定义组件与布局的实现

Angular自定义路由复用策略,返回上一个页面页面保持

微信小程序覆盖自定义组件样式

CocoaLumberjack 自定义日志级别