2009-08-26 2 views
2

У меня есть смутное представление о том, как работает Code Access Security в Sharepoint.Безопасность доступа к коду и веб-сайты Sharepoint

Я разработал пользовательский веб-части и установки политику CAS в моем Manifest

<CodeAccessSecurity> 
<PolicyItem> 
    <PermissionSet class="NamedPermissionSet" version="1" Description="Permission set for Okana"> 
    <IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1" ObjectModel="True" Impersonate="True" /> 
    <IPermission class="SecurityPermission" version="1" Flags="Assertion, Execution, ControlThread, ControlPrincipal, RemotingConfiguration" /> 
    <IPermission class="AspNetHostingPermission" version="1" Level="Medium" /> 
    <IPermission class="DnsPermission" version="1" Unrestricted="true" /> 
    <IPermission class="EventLogPermission" version="1" Unrestricted="true"> 
     <Machine name="localhost" access="Administer" /> 
    </IPermission> 
    <IPermission class="EnvironmentPermission" version="1" Unrestricted="true" /> 
    <IPermission class="System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" version="1" Unrestricted="true"/> 
    <IPermission class="System.Net.WebPermission, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" /> 
    <IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Unrestricted="true" /> 
    <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" PathDiscovery="*AllFiles*" /> 
    <IPermission class="IsolatedStorageFilePermission" version="1" Allowed="AssemblyIsolationByUser" UserQuota="9223372036854775807" /> 
    <IPermission class="PrintingPermission" version="1" Level="DefaultPrinting" /> 
    <IPermission class="PerformanceCounterPermission" version="1"> 
     <Machine name="localhost"> 
     <Category name="Enterprise Library Caching Counters" access="Write"/> 
     <Category name="Enterprise Library Cryptography Counters" access="Write"/> 
     <Category name="Enterprise Library Data Counters" access="Write"/> 
     <Category name="Enterprise Library Exception Handling Counters" access="Write"/> 
     <Category name="Enterprise Library Logging Counters" access="Write"/> 
     <Category name="Enterprise Library Security Counters" access="Write"/> 
     </Machine> 
    </IPermission> 
    <IPermission class="ReflectionPermission" version="1" Unrestricted="true"/> 
    <IPermission class="SecurityPermission" version="1" Flags="SerializationFormatter, UnmanagedCode, Infrastructure, Assertion, Execution, ControlThread, ControlPrincipal, RemotingConfiguration, ControlAppDomain,ControlDomainPolicy" /> 
    <IPermission class="SharePointPermission" version="1" ObjectModel="True" /> 
    <IPermission class="SmtpPermission" version="1" Access="Connect" /> 
    <IPermission class="SqlClientPermission" version="1" Unrestricted="true"/> 
    <IPermission class="WebPartPermission" version="1" Connections="True" /> 
    <IPermission class="WebPermission" version="1"> 
     <ConnectAccess> 
     <URI uri="$OriginHost$"/> 
     </ConnectAccess> 
    </IPermission> 
    </PermissionSet> 
    <Assemblies> 
    .... 
    </Assemblies> 

Это правильно преобразуется в wss_custom_wss_minimaltrust.config, когда он развернут на сервере Sharepoint и в основном работает.

Чтобы получить WebPart работает полностью, однако я считаю, что мне нужно изменить wss_custom_wss_minimaltrust.config вручную после развертывания и установите Unrestricted = «истина» на набор разрешений

<PermissionSet class="NamedPermissionSet" version="1" Description="Permission set for MyApp" Name="mywebparts.wsp-86d8cae1-7db2-4057-8c17-dc551adb17a2-1"> 

в

<PermissionSet class="NamedPermissionSet" version="1" Description="Permission set for MyApp" Name="mywebparts.wsp-86d8cae1-7db2-4057-8c17-dc551adb17a2-1" Unrestricted="true"> 

Это все, потому что я загружаю User Control из веб-части. Я не верю, что есть способ сделать это с использованием CAS, но я готов доказать свою правоту.

Есть ли способ установить что-то в манифесте, так что мне не нужно делать это исправление вручную?

Thanks

ответ

0

Является ли ваша веб-часть в файле bin?

Установили ли вы частично доверенные абоненты в сборке?

Если этого не сделать! это лучшая практика.

+0

yeps to both :) –

0

Иногда трудно определить, какие разрешения фактически используются при загрузке пользовательского контроля. Попробуйте предоставление неограниченного = истинна на следующий список классов безопасности, и если вы получите это работает, удалить их один за другим, пока вы не получите минимальный набор, необходимый для веб-части:

  <SecurityClass Name="AllMembershipCondition" Description="System.Security.Policy.AllMembershipCondition, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="AspNetHostingPermission" Description="System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
      <SecurityClass Name="DataProtectionPermission" Description="System.Security.Permissions.DataProtectionPermission, System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      <SecurityClass Name="DnsPermission" Description="System.Net.DnsPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="EnvironmentPermission" Description="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="EventLogPermission" Description="System.Diagnostics.EventLogPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="FileCodeGroup" Description="System.Security.Policy.FileCodeGroup, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="FileDialogPermission" Description="System.Security.Permissions.FileDialogPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="FileIOPermission" Description="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="FirstMatchCodeGroup" Description="System.Security.Policy.FirstMatchCodeGroup, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
      <SecurityClass Name="IsolatedStorageFilePermission" Description="System.Security.Permissions.IsolatedStorageFilePermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="KeyContainerPermission" Description="System.Security.Permissions.KeyContainerPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="NamedPermissionSet" Description="System.Security.NamedPermissionSet"/> 
      <SecurityClass Name="NetCodeGroup" Description="System.Security.Policy.NetCodeGroup, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="OleDbPermission" Description="System.Data.OleDb.OleDbPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="PerformanceCounterPermission" Description="System.Diagnostics.PerformanceCounterPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="PrintingPermission" Description="System.Drawing.Printing.PrintingPermission, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
      <SecurityClass Name="ReflectionPermission" Description="System.Security.Permissions.ReflectionPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="RegistryPermission" Description="System.Security.Permissions.RegistryPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="SecurityPermission" Description="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="SocketPermission" Description="System.Net.SocketPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="SharePointPermission" Description="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> 
      <SecurityClass Name="SmtpPermission" Description="System.Net.Mail.SmtpPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
      <SecurityClass Name="SqlClientPermission" Description="System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="StorePermission" Description="System.Security.Permissions.StorePermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="StrongNameMembershipCondition" Description="System.Security.Policy.StrongNameMembershipCondition, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="UIPermission" Description="System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="UnionCodeGroup" Description="System.Security.Policy.UnionCodeGroup, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="UrlMembershipCondition" Description="System.Security.Policy.UrlMembershipCondition, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
      <SecurityClass Name="WebPartPermission" Description="Microsoft.SharePoint.Security.WebPartPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> 
      <SecurityClass Name="WebPermission" Description="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <SecurityClass Name="ZoneMembershipCondition" Description="System.Security.Policy.ZoneMembershipCondition, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
0

Для установки КАН посмотреть на codeplex и см. wspbuilder.

Вам не нужно будет делать это вручную.

0

Насколько я знаю, вы не можете применять пользовательский контроль для пользовательских элементов управления. Загрузка пользовательских элементов Dlls обязательно должна быть в Gac или веб-приложении. Уровень доверия должен быть установлен полностью. Попробуйте избежать пользовательского контроля, если вам нужно положить вашу dll в корзину

Смежные вопросы