NetCodeGroup Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет доступ к веб-узлу, с которого была загружена сборка. Этот класс не наследуется.
public ref class NetCodeGroup sealed : System::Security::Policy::CodeGroup
public sealed class NetCodeGroup : System.Security.Policy.CodeGroup
[System.Serializable]
public sealed class NetCodeGroup : System.Security.Policy.CodeGroup
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class NetCodeGroup : System.Security.Policy.CodeGroup
type NetCodeGroup = class
inherit CodeGroup
[<System.Serializable>]
type NetCodeGroup = class
inherit CodeGroup
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type NetCodeGroup = class
inherit CodeGroup
Public NotInheritable Class NetCodeGroup
Inherits CodeGroup
- Наследование
- Атрибуты
Примеры
В следующем примере кода показано создание NetCodeGroup и добавление CodeConnectAccess объектов для кода, загруженного с помощью схемы HTTP.
static void SetNetCodeGroupAccess()
{
String^ userPolicyLevel = "User";
// Locate the User policy level.
PolicyLevel^ level = nullptr;
System::Collections::IEnumerator^ ph =
System::Security::SecurityManager::PolicyHierarchy();
while(ph->MoveNext())
{
level = (PolicyLevel^)ph->Current;
if (level->Label == userPolicyLevel)
{
break;
}
}
if (level->Label != userPolicyLevel)
throw gcnew ApplicationException("Could not find User policy level.");
IMembershipCondition^ membership =
gcnew UrlMembershipCondition("http://www.contoso.com/*");
NetCodeGroup^ codeGroup = gcnew NetCodeGroup(membership);
// Delete default settings.
codeGroup->ResetConnectAccess();
// Create an object that represents access to the FTP scheme and
// default port.
CodeConnectAccess^ CodeAccessFtp =
gcnew CodeConnectAccess(Uri::UriSchemeFtp,
CodeConnectAccess::DefaultPort);
// Create an object that represents access to the HTTPS scheme
// and default port.
CodeConnectAccess^ CodeAccessHttps =
gcnew CodeConnectAccess(Uri::UriSchemeHttps,
CodeConnectAccess::DefaultPort);
// Create an object that represents access to the origin
// scheme and port.
CodeConnectAccess^ CodeAccessOrigin =
CodeConnectAccess::CreateOriginSchemeAccess
(CodeConnectAccess::OriginPort);
// Add connection access objects to the NetCodeGroup object.
codeGroup->AddConnectAccess(Uri::UriSchemeHttp, CodeAccessFtp);
codeGroup->AddConnectAccess(Uri::UriSchemeHttp, CodeAccessHttps);
codeGroup->AddConnectAccess(Uri::UriSchemeHttp, CodeAccessOrigin);
// Provide name and description information for caspol.exe tool.
codeGroup->Name = "ContosoHttpCodeGroup";
codeGroup->Description = "Code originating from contoso.com can" +
" connect back using the FTP or HTTPS.";
// Add the code group to the User policy's root node.
level->RootCodeGroup->AddChild(codeGroup);
// Save the changes to the policy level.
System::Security::SecurityManager::SavePolicy();
}
public static void SetNetCodeGroupAccess()
{
const string userPolicyLevel = "User";
// Locate the User policy level.
PolicyLevel level = null;
System.Collections.IEnumerator ph =
System.Security.SecurityManager.PolicyHierarchy();
while(ph.MoveNext())
{
level = (PolicyLevel)ph.Current;
if( level.Label == userPolicyLevel )
{
break;
}
}
if (level.Label != userPolicyLevel)
throw new ApplicationException("Could not find User policy level.");
IMembershipCondition membership =
new UrlMembershipCondition(@"http://www.contoso.com/*");
NetCodeGroup codeGroup = new NetCodeGroup(membership);
// Delete default settings.
codeGroup.ResetConnectAccess();
// Create an object that represents access to the FTP scheme and default port.
CodeConnectAccess a1 = new CodeConnectAccess(Uri.UriSchemeFtp, CodeConnectAccess.DefaultPort);
// Create an object that represents access to the HTTPS scheme and default port.
CodeConnectAccess a2 = new CodeConnectAccess(Uri.UriSchemeHttps, CodeConnectAccess.DefaultPort);
// Create an object that represents access to the origin scheme and port.
CodeConnectAccess a3 = CodeConnectAccess.CreateOriginSchemeAccess(CodeConnectAccess.OriginPort);
// Add connection access objects to the NetCodeGroup object.
codeGroup.AddConnectAccess(Uri.UriSchemeHttp, a1);
codeGroup.AddConnectAccess(Uri.UriSchemeHttp, a2);
codeGroup.AddConnectAccess(Uri.UriSchemeHttp, a3);
// Provide name and description information for caspol.exe tool.
codeGroup.Name = "ContosoHttpCodeGroup";
codeGroup.Description = "Code originating from contoso.com can connect back using the FTP or HTTPS.";
// Add the code group to the User policy's root node.
level.RootCodeGroup.AddChild(codeGroup);
// Save the changes to the policy level.
System.Security.SecurityManager.SavePolicy();
}
Комментарии
Группы кода являются стандартными блоками политики безопасности доступа к коду. Каждый уровень политики состоит из корневой группы кода, которая может содержать одну или несколько дочерних групп кода. Каждая дочерняя группа кода может иметь собственные дочерние группы кода; это поведение распространяется на любое количество уровней, образуя дерево. Каждая группа кода имеет условие членства, которое определяет, принадлежит ли данная сборка группе на основе свидетельств для этой сборки. Только группы кода, условия членства которых соответствуют заданной сборке, а также их дочерние группы кода применяют политику безопасности доступа к коду.
NetCodeGroup имеет ту же семантику слияния, что и ; UnionCodeGroupона формирует объединение PolicyStatement объектов всех соответствующих дочерних групп кода и PolicyStatement создает из входного Url свидетельства. Однако возвращает разрешение, NetCodeGroup содержащее динамически вычисляемый WebPermission объект , который предоставляет доступ для подключения к сайту, с которого выполняется код; UnionCodeGroup просто возвращает статический набор разрешений.
NetCodeGroup При создании он содержит правила доступа к подключению по умолчанию, показанные в следующей таблице.
Схема URI | Правило |
---|---|
файл | Доступ к серверу-источнику не разрешен. |
http | Доступ по протоколам HTTP и HTTPS разрешен с помощью порта источника. |
HTTPS | Доступ по протоколу HTTPS разрешен через порт источника. |
Вы можете управлять схемой и портом, которые коду разрешено использовать при подключении к исходному сайту, передав CodeConnectAccess в метод объект с соответствующими Scheme значениями AddConnectAccess свойств и Port . Вы можете создать правило доступа к подключению, которое применяется, если схема источника отсутствует в свидетельстве или не распознается, указав AbsentOriginScheme в качестве схемы (""). Вы также можете создать правило доступа к подключению, которое применяется при отсутствии правила доступа к подключению со схемой сопоставления, указав AnyOtherOriginScheme в качестве схемы ("*").
Примечание
Если код не отправляет схему URI в качестве доказательства, доступ разрешен с помощью любой схемы обратно на исходный сайт.
Конструкторы
NetCodeGroup(IMembershipCondition) |
Инициализирует новый экземпляр класса NetCodeGroup. |
Поля
AbsentOriginScheme |
Содержит значение, используемое для задания доступа для подключения для кода с неизвестной или нераспознанной схемой источника. |
AnyOtherOriginScheme |
Содержит значение, используемое для задания любой точно не установленной схемы источника. |
Свойства
AttributeString |
Получает строковое представление атрибутов инструкции политики для группы кода. |
Children |
Возвращает или задает упорядоченный список дочерних элементов группы кода. (Унаследовано от CodeGroup) |
Description |
Возвращает или задает описание группы кода. (Унаследовано от CodeGroup) |
MembershipCondition |
Возвращает или задает условие членства группы кода. (Унаследовано от CodeGroup) |
MergeLogic |
Получает алгоритм, используемый для объединенных групп. |
Name |
Возвращает или задает имя группы кода. (Унаследовано от CodeGroup) |
PermissionSetName |
Получает имя NamedPermissionSet для группы кода. |
PolicyStatement |
Возвращает или задает инструкцию политики, связанную с группой кода. (Унаследовано от CodeGroup) |
Методы
AddChild(CodeGroup) |
Добавляет дочернюю группу кода в текущую группу кода. (Унаследовано от CodeGroup) |
AddConnectAccess(String, CodeConnectAccess) |
Добавляет заданный доступ для подключения в текущую группу кода. |
Copy() |
Производит глубокое копирование текущей группы кода. |
CreateXml(SecurityElement, PolicyLevel) |
При переопределении в производном классе производит сериализацию свойств и внутреннего состояния, являющегося особым для производной группы кода, а также добавляет сериализацию в заданный объект SecurityElement. (Унаследовано от CodeGroup) |
Equals(CodeGroup, Boolean) |
Определяет, эквивалентны ли заданная и текущая группа кода, проверяя, если это указано, также и дочерние группы кода. (Унаследовано от CodeGroup) |
Equals(Object) |
Определяет, эквивалентны ли заданная и текущая группы кода. |
Equals(Object) |
Определяет, эквивалентны ли заданная и текущая группы кода. (Унаследовано от CodeGroup) |
FromXml(SecurityElement) |
Восстанавливает объект безопасности с данным состоянием из кодировки XML. (Унаследовано от CodeGroup) |
FromXml(SecurityElement, PolicyLevel) |
Восстанавливает объект безопасности с данным состоянием и уровнем политики из кодировки XML. (Унаследовано от CodeGroup) |
GetConnectAccessRules() |
Получает информацию доступа для подключения для текущей группы кода. |
GetHashCode() |
Получает хэш-код текущей группы кода. |
GetHashCode() |
Получает хэш-код текущей группы кода. (Унаследовано от CodeGroup) |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ParseXml(SecurityElement, PolicyLevel) |
При переопределении в производном классе восстанавливает свойства и внутреннее состояние, являющееся особым для производной группы кода, из указанного объекта SecurityElement. (Унаследовано от CodeGroup) |
RemoveChild(CodeGroup) |
Удаляет указанную дочернюю группу кода. (Унаследовано от CodeGroup) |
ResetConnectAccess() |
Удаляет всю информацию доступа для подключения для текущей группы кода. |
Resolve(Evidence) |
Обрабатывает политику для группы кода и ее дочерних элементов, используя набор свидетельств. |
ResolveMatchingCodeGroups(Evidence) |
Обрабатывает согласующиеся группы кода. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
ToXml() |
Создает кодировку XML для объекта безопасности и его текущего состояния. (Унаследовано от CodeGroup) |
ToXml(PolicyLevel) |
Создает кодировку XML для объекта безопасности, его текущего состояния и уровня политики, в рамках которой существует код. (Унаследовано от CodeGroup) |