다음을 통해 공유


NetCodeGroup 클래스

어셈블리를 다운로드한 사이트에 웹 권한을 부여합니다. 이 클래스는 상속될 수 없습니다.

네임스페이스: System.Security.Policy
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class NetCodeGroup
    Inherits CodeGroup
‘사용 방법
Dim instance As NetCodeGroup
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class NetCodeGroup : CodeGroup
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class NetCodeGroup sealed : public CodeGroup
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class NetCodeGroup extends CodeGroup
SerializableAttribute 
ComVisibleAttribute(true) 
public final class NetCodeGroup extends CodeGroup

설명

코드 그룹은 코드 액세스 보안 정책의 빌딩 블록입니다. 각 정책 수준은 자식 코드 그룹을 하나 이상 가질 수 있는 루트 코드 그룹으로 구성되며 각 자식 코드 그룹 또한 자신의 자식 코드 그룹을 가질 수 있습니다. 이러한 방식으로 원하는 만큼 수준을 확장하여 트리를 형성할 수 있습니다. 각 코드 그룹에는 주어진 어셈블리의 증명 정보를 기반으로 하여 어셈블리가 해당 코드 그룹에 속하는지 여부를 확인하는 멤버 자격 조건이 있습니다. 해당 멤버 자격 조건이 주어진 어셈블리와 일치하는 코드 그룹과 그 자식 코드 그룹에만 코드 액세스 보안 정책이 적용됩니다.

NetCodeGroup에는 UnionCodeGroup의 병합 의미와 같은 병합 의미가 있으므로 일치하는 모든 자식 코드 그룹의 PolicyStatement 개체 및 입력 Url 증명 정보에서 생성되는 PolicyStatement이 통합됩니다. 하지만 NetCodeGroup은 코드가 실행되는 사이트에 대한 연결 액세스 권한을 부여하는 동적으로 계산된 WebPermission이 포함된 권한을 반환하는 반면 UnionCodeGroup은 정적 권한 집합만 반환합니다.

NetCodeGroup이 만들어지면 다음 표에 나와 있는 기본 연결 액세스 규칙이 포함됩니다.

URI 체계

규칙

file

원래 서버에 대한 연결 액세스가 허용되지 않습니다.

http

원래 포트를 사용한 HTTP 및 HTTPS 액세스가 허용됩니다.

https

원래 포트를 사용한 HTTPS 액세스가 허용됩니다.

적절한 SchemePort 속성 값이 포함된 CodeConnectAccess 개체를 AddConnectAccess 메서드로 전달하여 원래 사이트에 다시 연결할 때 코드에서 사용할 수 있는 체계와 포트를 제어할 수 있습니다. AbsentOriginScheme("")을 체계로 지정하여 원래 체계가 증명 정보에 없거나 인식되지 않는 경우 적용되는 연결 액세스 규칙을 만들 수 있습니다. 또한 AnyOtherOriginScheme("*")을 체계로 지정하여 일치하는 체계가 있는 연결 액세스 규칙이 없는 경우 적용되는 연결 액세스 규칙을 만들 수도 있습니다.

참고

코드에서 URI 체계를 증명 정보로 제출하지 않는 경우 임의의 체계를 사용하여 원래 사이트에 다시 액세스할 수 있습니다.

예제

다음 코드 예제에서는 NetCodeGroup을 만들고 HTTP 체계를 사용하여 다운로드한 코드에 대한 CodeConnectAccess 개체를 추가하는 방법을 보여 줍니다.

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(@"https://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();
}
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("https://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() throws ApplicationException
{
    final 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.get_Current();
        if (level.get_Label().Equals(userPolicyLevel)) {
            break;
        }
    }
    if (!(level.get_Label().Equals(userPolicyLevel))) {
        throw new ApplicationException("Could not find User policy level.");
    }
    IMembershipCondition membership =
        new UrlMembershipCondition("https://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.set_Name("ContosoHttpCodeGroup");
    codeGroup.set_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.get_RootCodeGroup().AddChild(codeGroup);
    // Save the changes to the policy level.
    System.Security.SecurityManager.SavePolicy();
} //SetNetCodeGroupAccess

상속 계층 구조

System.Object
   System.Security.Policy.CodeGroup
    System.Security.Policy.NetCodeGroup

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

참고 항목

참조

NetCodeGroup 멤버
System.Security.Policy 네임스페이스

기타 리소스

코드 그룹