Spec-Zone .ru
спецификации, руководства, описания, API

21.2.5.19. Работа с Частичным Доверием / Среднее Доверие

Приложения.NET работают под данным доверительным уровнем. Нормальные настольные приложения работают под полным доверием, в то время как веб-приложения, которые размещаются в совместно используемых средах, обычно выполняются под частичным доверительным уровнем (также известный как "среднее доверие"). Некоторые поставщики услуг хостинга размещают совместно использованные приложения в своих собственных пулах приложения и позволяют приложению работать под полным доверием, но эта конфигурация относительно редка. Соединитель/Сетевая поддержка для частичного доверия улучшился в течение долгого времени, чтобы упростить конфигурацию и процесс развертывания для поставщиков услуг хостинга.

21.2.5.19.1. Развитие Частичной Доверительной Поддержки Через Версии Соединителя/Сети

Частичная доверительная поддержка Соединителя/Сети улучшилась быстро повсюду 6.5.x и 6.6.x версии. Последние улучшения действительно требуют некоторых изменений конфигурации в существующем развертывании. Вот сводка изменений для каждой версии.

6.6.4 и Выше: Библиотекой Может Быть Внутри или снаружи GAC

Теперь можно установить MySql.Data.dll библиотека в Глобальном кэше сборок (GAC) как объяснено в Разделе 21.2.5.19.2, "Конфигурируя Частичное Доверие с Соединителем/Сетевой библиотекой, Установленным в GAC", или в a bin или lib папка в проекте или решении как объяснено в Разделе 21.2.5.19.3, "Конфигурируя Частичное Доверие с Соединителем/Сетевой библиотекой, Не Установленным в GAC". Если библиотека не находится в GAC, единственным поддерживаемым протоколом является TCP/IP.

6.5.1 и Выше: Частичное Доверие Требует Библиотеки в GAC

Соединитель/Сеть 6.5 полностью позволяет нашему провайдеру работать в частичной доверительной среде, когда библиотека устанавливается в Глобальном кэше сборок (GAC). Новое MySqlClientPermission class, полученный из.NET DBDataPermission class, помогает упростить установку разрешения.

5.0.8/5.1.3 и Выше: Частичное Доверие Требует Полномочий Сокета

Запускаясь с этих версий, Соединитель/Сеть может использоваться под частичным доверием, размещающим, который был изменен, чтобы позволить использование сокетов для передачи. По умолчанию частичное доверие не включает SocketPermission. Сокеты использования соединителя/Сети, чтобы говорить с сервером MySQL, таким образом, поставщик услуг хостинга должен создать новый доверительный уровень, который является точным клоном частичного доверия, но этому добавили следующие полномочия:

  • System.Net.SocketPermission

  • System.Security.Permissions.ReflectionPermission

  • System.Net.DnsPermission

  • System.Security.Permissions.SecurityPermission

До 5.0.8 / 5.1.3: Частичное Доверие, Не Поддерживаемое

Версии соединителя/Сети до 5.0.8 и 5.1.3 не были совместимыми с частичным доверительным хостингом.

21.2.5.19.2. Конфигурирование Частичного Доверия с Соединителем/Сетевой библиотекой, Установленным в GAC

Если библиотека устанавливается в GAC, следует включать опцию соединения includesecurityasserts=true в Вашей строке подключения. Это - новое требование с Соединителя/Сети 6.6.4.

Следующие выставочные шаги списка и фрагменты кода должны были запустить приложение Соединителя/Сети в частичной доверительной среде. В целях иллюстрации мы используем протокол Соединений Канала в этом примере.

  1. Соединитель/Сеть установки: версия 6.6.1 или выше, или 6.5.4 или выше.

  2. После установки библиотеки сделайте следующие изменения конфигурации:

    В SecurityClasses раздел, добавляет определение для MySqlClientPermission class, включая версию, чтобы использовать.

    <configuration>  <mscorlib>    <security>      <policy>        <PolicyLevel version="1">          <SecurityClasses>            ....            <SecurityClass Name="MySqlClientPermission" Description="MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />

    Прокрутите вниз к ASP.Net раздел:

    <PermissionSet  class="NamedPermissionSet"  version="1"  Name="ASP.Net">

    Добавьте новую запись для подробной конфигурации MySqlClientPermission class:

    <IPermission class="MySqlClientPermission" version="1" Unrestricted="true"/>

    Отметьте: Эта конфигурация является наиболее обобщенным путем, который включает все ключевые слова.

  3. Сконфигурируйте сервер MySQL, чтобы принять соединения канала, добавляя --enable-named-pipe опция на командной строке. Если Вы нуждаетесь в большей информации об этом, см. Раздел 2.3, "Устанавливая MySQL на Microsoft Windows".

  4. Подтвердите, что поставщик услуг хостинга установил Соединитель/Сетевую библиотеку (MySql.Data.dll) в GAC.

  5. Дополнительно, поставщик услуг хостинга может избежать предоставлять полномочия глобально при использовании нового MySqlClientPermission class в доверительных политиках. (Альтернатива должна глобально включить полномочиям System.Net.SocketPermission, System.Security.Permissions.ReflectionPermission, System.Net.DnsPermission, и System.Security.Permissions.SecurityPermission.)

  6. Создайте простое веб-приложение, используя Visual Studio 2010.

  7. Добавьте ссылку в своем приложении для MySql.Data.MySqlClient библиотека.

  8. Отредактируйте Ваш web.config файл так, чтобы Ваши выполнения приложения, используя Средний доверительный уровень:

    <system.web>  <trust level="Medium"/></system.web>
  9. Добавьте MySql.Data.MySqlClient пространство имен к Вашей странице серверного кода.

  10. Определите строку подключения немного отличающимися способами в зависимости от версии Соединителя/Сети.

    Только для 6.6.4 или позже: Чтобы использовать соединения в любом веб-приложении, которое будет работать в Среднем доверии, добавьте новое includesecurityasserts опция к строке подключения. includesecurityasserts=true это обращается с просьбой библиотеки следующие полномочия когда требующийся: SocketPermissions, ReflectionPermissions, DnsPermissions, SecurityPermissions среди других, которых не предоставляют в Средних доверительных уровнях.

    Для Соединителя/Сети 6.6.3 или ранее: Никакая специальная установка для безопасности не необходима в пределах строки подключения.

    MySqlConnectionStringBuilder myconnString = new MySqlConnectionStringBuilder("server=localhost;User Id=root;database=test;");myconnString.PipeName = "MySQL55";myconnString.ConnectionProtocol = MySqlConnectionProtocol.Pipe;// Following attribute is a new requirement when the library is in the GAC.// Could also be done by adding includesecurityasserts=true; to the string literal// in the constructor above.// Not needed with Connector/Net 6.6.3 and earlier.myconnString.IncludeSecurityAsserts = true;
  11. Определите MySqlConnection использовать:

    MySqlConnection myconn = new MySqlConnection(myconnString.ConnectionString);myconn.Open();
  12. Получите некоторые данные от своих таблиц:

    MySqlCommand cmd = new MySqlCommand("Select * from products", myconn);MySqlDataAdapter da = new MySqlDataAdapter(cmd);DataSet1 tds = new DataSet1();da.Fill(tds, tds.Tables[0].TableName);GridView1.DataSource = tds;GridView1.DataBind();myconn.Close()
  13. Выполните программу. Это должно выполниться успешно, не требуя никакого специального кода или встречаясь с любыми проблемами безопасности.

21.2.5.19.3. Конфигурирование Частичного Доверия с Соединителем/Сетевой библиотекой Не Установленный inGAC

Развертывая веб-приложение к Совместно используемой Размещенной среде, где эта среда конфигурируется, чтобы запустить все их приложения.NET под частичным или средним доверительным уровнем, Вы не могли бы быть в состоянии установить Соединитель/Сетевую библиотеку в GAC. Вместо этого Вы помещаете ссылку на библиотеку в bin или lib папка в проекте или решении. В этом случае Вы конфигурируете безопасность по-другому чем тогда, когда библиотека находится в GAC.

Соединитель/Сеть обычно используется приложениями, которые работают в средах Windows, где передача значения по умолчанию для протокола используется через сокеты или TCP/IP. Для этого протокола, чтобы работать необходимо, имеют необходимые полномочия сокета в веб-конфигурационном файле следующим образом:

  1. Откройте средний доверительный веб-конфигурационный файл политики, который должен находиться под этой папкой:

    %windir%\Microsoft.NET\Framework\{version}\CONFIG\web_mediumtrust.config

    Использовать Framework64 в пути вместо Framework если Вы используете 64-разрядную установку платформы.

  2. Расположитесь SecurityClasses тег:

    <SecurityClass Name="SocketPermission" Description="System.Net.SocketPermission, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
  3. Прокрутите вниз и ищите следующий PermissionSet:

    <PermissionSet version="1" Name="ASP.Net">
  4. Добавьте следующую внутреннюю часть это PermissionSet:

    <IPermission class="SocketPermission" version="1" Unrestricted="true" />  

    Эта конфигурация позволяет Вам использовать драйвер с протоколом Windows значения по умолчанию TCP/IP, не имея вопросов безопасности. Этот подход только поддерживает протокол TCP/IP, таким образом, невозможно использовать никакой другой тип соединения.

    Кроме того, начиная с MySQLClientPermissions class не добавляется к средней доверительной политике, невозможно использовать это. Эта конфигурация является минимумом, требуемым, чтобы работать с Соединителем/Сетью без GAC.