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 объект с соответствующими SchemePort значениями свойств в AddConnectAccess метод. Вы можете создать правило доступа к подключению, которое применяется, если схема источника отсутствует в доказательствах или не распознается путем указания 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, PolicyLevel) |
Восстанавливает объект безопасности с заданным состоянием и уровнем политики из кодировки XML. (Унаследовано от CodeGroup) |
| FromXml(SecurityElement) |
Восстанавливает объект безопасности с заданным состоянием из кодировки 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) |