NetCodeGroup 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
向从其下载程序集的站点授予 Web 权限。 此类不能被继承。
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 ,并为使用 HTTP 方案下载的代码添加 CodeConnectAccess 对象。
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它从输入Url证据生成的 对象的联合PolicyStatement。 但是, NetCodeGroup 返回包含动态计算 WebPermission 的权限,该权限授予对运行代码的站点的连接访问权限; UnionCodeGroup 仅返回静态权限集。
NetCodeGroup创建 时,它包含下表中显示的默认连接访问规则。
URI 方案 | 规则 |
---|---|
文件 | 不允许对源服务器的连接访问。 |
http | 允许使用源端口进行 HTTP 和 HTTPS 访问。 |
https | 允许使用源端口进行 HTTPS 访问。 |
通过将具有相应SchemePort和属性值AddConnectAccess的 对象传递给 CodeConnectAccess 方法,可以控制代码在连接回其源站点时允许使用的方案和端口。 可以通过将 (“”) 指定 AbsentOriginScheme 为方案,创建在证据中不存在源方案或无法识别时应用的连接访问规则。 还可以通过将 (“*”) 指定 AnyOtherOriginScheme 为方案,创建在没有具有匹配方案的连接访问规则时应用的连接访问规则。
备注
如果代码未将 URI 方案作为证据提交,则允许使用任何方案返回到源站点进行访问。
构造函数
NetCodeGroup(IMembershipCondition) |
初始化 NetCodeGroup 类的新实例。 |
字段
AbsentOriginScheme |
包含一个值,该值用于为具有未知或未能识别的原始方案的代码指定连接访问权限。 |
AnyOtherOriginScheme |
包含一个值,用于指定任何其他未指定的原始方案。 |
属性
AttributeString |
获取代码组策略声明的特性的字符串表示形式。 |
Children |
获取或设置代码组的子代码组的排序列表。 (继承自 CodeGroup) |
Description |
获取或设置代码组的说明。 (继承自 CodeGroup) |
MembershipCondition |
获取或设置代码组的成员条件。 (继承自 CodeGroup) |
MergeLogic |
获取用于合并组的逻辑。 |
Name |
获取或设置代码组的名称。 (继承自 CodeGroup) |
PermissionSetName |
获取该代码组的 NamedPermissionSet 的名称。 |
PolicyStatement |
获取或设置与该代码组关联的策略声明。 (继承自 CodeGroup) |