SharePoint V3 中的 Code Access Security

Code Access Security Schema长什么样?

================

提供一个例子, 请注意黄色的高亮的部分.

2-18-2010 1-30-34 PM

 

Schema的规则

  1. 每一个Solution manifest中只能有一个CodeAccessSecurity 节点.
  2. PolicyItem节点可以有任意多个.
  3. 任何一个PolicyItem节点只能有一个PermissionSetAssemblies 节点.
  4. 每一个PermissionSet节点能够拥有任意数目的IPermission节点
  5. IPermission节点的Schema是由.NET framework定义的.
  6. 每一个Assemblies节点能够包含任意数目的Assembly节点.
  7. CodeAccessSecurity/PolicyItem/Assemblies/Assembly 节点与Solution/Assemblies/Assembly 节点不同..
  8. Assembly节点能够拥有下列的任意属性:
  • Name
  • Version
  • PublicKeyBlob

添加和部署包含code access security policy的solution的命令

===================

Add: stsadm.exe -o addSolution -filename "InstallAssemblies_Solution_2052225630.cab"
Deploy: stsadm.exe -o deploySolution -name "InstallAssemblies_Solution_2052225630.cab" -allcontenturls -local -force –allowCasPolicies

 

注意, stsadm.exe会需要为包含contain CAS policy的Solution Package使用-allowCasPolicies标志位.

 

一旦Solution被部署之后, trust file长什么样?

===================

2-18-2010 2-13-52 PM

 

从manifest到trust file... 究竟发生了什么?

==================

  1. PolicyItem中的PermissionSet是直接地插入到trust file中的(第一个高亮的部分). 在这个例子中, PermissionSet被命名为"installassemblies_solution_2052225630.cab-b172f003-d6c7-3e13-f737-a5d84a02e3e5-1". 这个名字是一个组合, 组成部分有installation package("installassemblies_solution_2052225630.cab") 加上SolutionID("b172f003-d6c7-3e13-f737-a5d84a02e3e5")加上PolicyItem index (在这个例子里只有一个PolicyItem).
  2. 在manifest中, 对于每一个与给定的PolicyItem关联的Assembly, 会创建一个CodeGroup(第二个黄色高亮的部分). 每一个CodeGroup都会引用在PolicyItem中的相关联的PermissionSet. 另外, 每一个CodeGroup都被插入到parent CodeGroup容器的第一个位置上. 这会确保FirstMatchCodeGroup 行为能够允许自定义的policies在默认的WSS Permission Set被应用之前得到应用.

现在让我们看看CodeGroups是如何基于在manifest file中的数据被创建起来的

===================

正如刚才在schema规则部分提到的, Solution\CodeAccessSecurity\Assemblies\Assembly节点能够包含三个属性, Name, Version and PublicKeyBlob. 三个属性的组合可以确定class正在使用哪个membership.

 

只有Name属性—> UrlMembershipCondition

-------------------------

当assemblies没有签名, 并且仅仅部署在BIN目录下的时候, 使用这种格式.

2-18-2010 11-03-00 PM

 

只有PublicKeyBlob属性—> StrongNameMembershipCondition

----------------------------------

当你想要globally地应用一个policy到使用某个签名的所有程序集上的时候, 使用这种格式.

2-18-2010 11-05-41 PM

 

PublicKeyBlob + Name –> StrongNameMembershipCondition

-------------------------------

当你想要隔离一个policy到某一个特定的assembly上的时候, 你可以使用这种格式. Policy会应用到所有的版本上.

2-18-2010 11-09-52 PM

 

PublicKeyBlob + Name + Version --> StrongNameMembershipCondition

-------------------------------

当你想要隔离一个policy到一个特定的, 签名的, 某个版本的程序集上, 使用这种格式.

2-18-2010 11-12-12 PM

 

Code Access Security policies within SharePoint v3

http://www.bluedoglimited.com/SharePointThoughts/ViewPost.aspx?ID=249

posted on 2010-02-18 23:13  中道学友  阅读(326)  评论(0编辑  收藏  举报

导航

技术追求准确,态度积极向上