SharePoint V3 中的 Code Access Security

來源:互聯網
上載者:User

Code Access Security Schema長什麼樣?

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

提供一個例子, 請注意黃色的高亮的部分.

 

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長什麼樣?

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

 

從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目錄下的時候, 使用這種格式.

 

只有PublicKeyBlob屬性—> StrongNameMembershipCondition

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

當你想要globally地應用一個policy到使用某個簽名的所有程式集上的時候, 使用這種格式.

 

PublicKeyBlob + Name –> StrongNameMembershipCondition

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

當你想要隔離一個policy到某一個特定的assembly上的時候, 你可以使用這種格式. Policy會應用到所有的版本上.

 

PublicKeyBlob + Name + Version --> StrongNameMembershipCondition

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

當你想要隔離一個policy到一個特定的, 簽名的, 某個版本的程式集上, 使用這種格式.

 

Code Access Security policies within SharePoint v3

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.