WebPermission クラス

定義

HTTP インターネット リソースへのアクセス権を制御します。Controls rights to access HTTP Internet resources.

public ref class WebPermission sealed : System::Security::CodeAccessPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Serializable]
public sealed class WebPermission : System.Security.CodeAccessPermission, System.Security.Permissions.IUnrestrictedPermission
type WebPermission = class
    inherit CodeAccessPermission
    interface IUnrestrictedPermission
Public NotInheritable Class WebPermission
Inherits CodeAccessPermission
Implements IUnrestrictedPermission
継承
属性
実装

次の例では、Regexを使用して WebPermission の新しいインスタンスを作成する方法を示します。The following example demonstrates how to create a new instance of WebPermission using a Regex. 追加のホストは、WebPermissionの [接続] および [許可] の一覧に追加されます。Additional hosts are added to the connect and accept list of WebPermission. 最後に、接続と受け入れの一覧がコンソールに表示されます。Finally, the connect and accept list are displayed to the console.

//  Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
Regex^ myRegex = gcnew Regex( "http://www\\.contoso\\.com/.*" );

// Create a WebPermission that gives permissions to all the hosts containing the same host fragment.
WebPermission^ myWebPermission = gcnew WebPermission( NetworkAccess::Connect,myRegex );

//Add connect privileges for a www.adventure-works.com.
myWebPermission->AddPermission( NetworkAccess::Connect, "http://www.adventure-works.com" );

//Add accept privileges for www.alpineskihouse.com.
myWebPermission->AddPermission( NetworkAccess::Accept, "http://www.alpineskihouse.com/" );

// Check whether all callers higher in the call stack have been granted the permission.
myWebPermission->Demand();

// Get all the URIs with Connect permission.
IEnumerator^ myConnectEnum = myWebPermission->ConnectList;
Console::WriteLine( "\nThe 'URIs' with 'Connect' permission are :\n" );
while ( myConnectEnum->MoveNext() )
{
   Console::WriteLine( "\t{0}", myConnectEnum->Current );
}

// Get all the URIs with Accept permission.   
IEnumerator^ myAcceptEnum = myWebPermission->AcceptList;
Console::WriteLine( "\n\nThe 'URIs' with 'Accept' permission is :\n" );

while ( myAcceptEnum->MoveNext() )
{
   Console::WriteLine( "\t{0}", myAcceptEnum->Current );
}

   //  Create a Regex that accepts all URLs containing the host fragment www.contoso.com.
   Regex myRegex = new Regex(@"http://www\.contoso\.com/.*");

   // Create a WebPermission that gives permissions to all the hosts containing the same host fragment.
   WebPermission myWebPermission = new WebPermission(NetworkAccess.Connect,myRegex);
   
   //Add connect privileges for a www.adventure-works.com.
   myWebPermission.AddPermission(NetworkAccess.Connect,"http://www.adventure-works.com");
   
   //Add accept privileges for www.alpineskihouse.com.
   myWebPermission.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com/");
   
   // Check whether all callers higher in the call stack have been granted the permission.
   myWebPermission.Demand();
   
   // Get all the URIs with Connect permission.
   IEnumerator myConnectEnum = myWebPermission.ConnectList;
   Console.WriteLine("\nThe 'URIs' with 'Connect' permission are :\n");
   while (myConnectEnum.MoveNext())
   {Console.WriteLine("\t" + myConnectEnum.Current);}

   // Get all the URIs with Accept permission.	  
   IEnumerator myAcceptEnum = myWebPermission.AcceptList;
   Console.WriteLine("\n\nThe 'URIs' with 'Accept' permission is :\n");
     
   while (myAcceptEnum.MoveNext())
     {Console.WriteLine("\t" + myAcceptEnum.Current);}

  ' Create a Regex that accepts all the URLs contianing the host fragment www.contoso.com.
  Dim myRegex As New Regex("http://www\.contoso\.com/.*")
    
  ' Create a WebPermission that gives permission to all the hosts containing same host fragment.
  Dim myWebPermission As New WebPermission(NetworkAccess.Connect, myRegex)
  ' Add connect privileges for a www.adventure-works.com.
  myWebPermission.AddPermission(NetworkAccess.Connect, "http://www.adventure-works.com")
  ' Add accept privileges for www.alpineskihouse.com.
  myWebPermission.AddPermission(NetworkAccess.Accept, "http://www.alpineskihouse.com/")
  ' Check whether all callers higher in the call stack have been granted the permission.
  myWebPermission.Demand()
    
  ' Get all the URIs with Connect permission.
  Dim myConnectEnum As IEnumerator = myWebPermission.ConnectList
  Console.WriteLine(ControlChars.NewLine + "The 'URIs' with 'Connect' permission are :" + ControlChars.NewLine)
  While myConnectEnum.MoveNext()
    Console.WriteLine((ControlChars.Tab + myConnectEnum.Current.ToString()))
  End While 
  
  ' Get all the URIs with Accept permission.	  
  Dim myAcceptEnum As IEnumerator = myWebPermission.AcceptList
  Console.WriteLine(ControlChars.NewLine + ControlChars.NewLine + "The 'URIs' with 'Accept' permission is :" + ControlChars.NewLine)

  While myAcceptEnum.MoveNext()
    Console.WriteLine((ControlChars.Tab + myAcceptEnum.Current))
  End While

注釈

WebPermission は、インターネットリソースへのアクセスを制御するための一連のメソッドとプロパティを提供します。WebPermission provides a set of methods and properties to control access to Internet resources. WebPermission を使用すると、WebPermission の作成時に設定された PermissionState に基づいて、リソースへの制限付きまたは無制限のアクセスを提供できます。You can use a WebPermission to provide either restricted or unrestricted access to your resource, based on the PermissionState that is set when the WebPermission is created.

次のパラメーターのセットのいずれかを使用してコンストラクターを呼び出すことによって、WebPermission インスタンスを作成します。Create a WebPermission instance by calling its constructor using one of the following sets of parameters:

ConnectListAcceptList は、アクセス許可が付与されている Uri を保持します。The ConnectList and AcceptList hold the URIs to which you have granted access permission. これらのリストのいずれかに URI を追加するには、AddPermissionを使用します。To add a URI to either of these lists, use AddPermission. NetworkAccess パラメーターとして Accept を渡すと、URI が AcceptListに追加されます。If you pass Accept as the NetworkAccess parameter, the URI will be added to the AcceptList. WebPermission により、AcceptListに一致する Uri を持つターゲットクラスへの接続が許可されます。WebPermission will allow connections to your target class with URIs matching the AcceptList.

注意事項

インターネットリソースへのアクセスを拒否するには、そのリソースへのすべての可能なパスへのアクセスを拒否する必要があります。To deny access to an Internet resource, you must deny access to all the possible paths to that resource. これには、state パラメーターを Denyに設定して WebPermission.WebPermission を呼び出す必要があります。This requires calling WebPermission.WebPermission with state parameter set to Deny. より適切な方法は、特定のリソースへのアクセスのみを許可することです。A better approach is to allow access to the specific resource only. この件名の詳細については、「 Deny メソッドの使用」のトピックを参照してください。For more information about this subject, refer to the Using the Deny Method topic.

注意

リソースの標準パスのみを使用してアクセスを拒否する必要があります。You need to deny access using only the resource canonical path. パスの構文のバリエーションをすべて使用する必要はありません。There is no need to use all the path's syntactical variations.

注意

ユーザー名と既定のポート情報は、WebPermission(NetworkAccess, Regex) コンストラクターに渡された正規表現引数と比較される前に、Uri から削除されます。User name and default port information is stripped from the Uri before the comparison with the regular expression argument that is supplied to the WebPermission(NetworkAccess, Regex) constructor. 正規表現にユーザー情報または既定のポート番号が含まれている場合、すべての着信 Uris は正規表現と一致しません。If the regular expression contains user information or the default port number, then all incoming Uris will fail to match the regular expression.

コンストラクター

WebPermission()

WebPermission クラスの新しいインスタンスを作成します。Creates a new instance of the WebPermission class.

WebPermission(NetworkAccess, Regex)

指定した URI 正規表現に対するアクセス権を指定して、WebPermission クラスの新しいインスタンスを初期化します。Initializes a new instance of the WebPermission class with the specified access rights for the specified URI regular expression.

WebPermission(NetworkAccess, String)

指定した URI に対して指定したアクセス権を持つ WebPermission クラスの新しいインスタンスを初期化します。Initializes a new instance of the WebPermission class with the specified access rights for the specified URI.

WebPermission(PermissionState)

すべての要求を渡すか、すべての要求を失敗させる WebPermission クラスの新しいインスタンスを作成します。Creates a new instance of the WebPermission class that passes all demands or fails all demands.

プロパティ

AcceptList

このプロパティは、この WebPermission で保持される単一の受け入れ許可の列挙体を返します。This property returns an enumeration of a single accept permissions held by this WebPermission. 返された列挙体に格納される可能性のあるオブジェクトの型は、String および Regex です。The possible objects types contained in the returned enumeration are String and Regex.

ConnectList

このプロパティは、この WebPermission で保持される単一の接続許可の列挙体を返します。This property returns an enumeration of a single connect permissions held by this WebPermission. 返された列挙体に格納される可能性のあるオブジェクトの型は、String および Regex です。The possible objects types contained in the returned enumeration are String and Regex.

メソッド

AddPermission(NetworkAccess, Regex)

指定したアクセス権を持つ指定した URI を現在の WebPermission に追加します。Adds the specified URI with the specified access rights to the current WebPermission.

AddPermission(NetworkAccess, String)

指定したアクセス権を持つ指定した URI 文字列を現在の WebPermission に追加します。Adds the specified URI string with the specified access rights to the current WebPermission.

Assert()

呼び出し側コードが、このメソッドを呼び出すコードを通じて、アクセス許可要求によって保護されているリソースにアクセス可能であるということ、それも、スタックの中で上位に位置する呼び出し側にリソースへのアクセス許可が付与されていない場合でさえそれが可能であることを宣言します。Declares that the calling code can access the resource protected by a permission demand through the code that calls this method, even if callers higher in the stack have not been granted permission to access the resource. Assert() を使用すると、セキュリティ上の問題が発生することがあります。Using Assert() can create security issues.

(継承元 CodeAccessPermission)
Copy()

WebPermission のコピーを作成します。Creates a copy of a WebPermission.

Demand()

呼び出し履歴の上位にあるすべての呼び出し元に、現在のインスタンスによって指定されているアクセス許可が付与されていない場合、実行時に SecurityException を強制します。Forces a SecurityException at run time if all callers higher in the call stack have not been granted the permission specified by the current instance.

(継承元 CodeAccessPermission)
Deny()

呼び出し履歴内の上位の呼び出し元が、このメソッドを呼び出すコードを使用して、現在のインスタンスで指定されたリソースにアクセスしないようにします。Prevents callers higher in the call stack from using the code that calls this method to access the resource specified by the current instance.

(継承元 CodeAccessPermission)
Equals(Object)

指定した CodeAccessPermission オブジェクトが、現在の CodeAccessPermission と等しいかどうかを判断します。Determines whether the specified CodeAccessPermission object is equal to the current CodeAccessPermission.

(継承元 CodeAccessPermission)
FromXml(SecurityElement)

XML エンコーディングから WebPermission を再構築します。Reconstructs a WebPermission from an XML encoding.

GetHashCode()

ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適している、CodeAccessPermission オブジェクトのハッシュ コードを取得します。Gets a hash code for the CodeAccessPermission object that is suitable for use in hashing algorithms and data structures such as a hash table.

(継承元 CodeAccessPermission)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
Intersect(IPermission)

2 つの WebPermission インスタンスの論理積集合を返します。Returns the logical intersection of two WebPermission instances.

IsSubsetOf(IPermission)

現在の WebPermission が、指定したオブジェクトのサブセットかどうかを判断します。Determines whether the current WebPermission is a subset of the specified object.

IsUnrestricted()

WebPermission の全般的なアクセス許可状態をチェックします。Checks the overall permission state of the WebPermission.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
PermitOnly()

呼び出し履歴内の上位の呼び出し元が、このメソッドを呼び出すコードでは一切リソースにアクセスできないようにします。ただし、現在のインスタンスで指定されているリソースは例外です。Prevents callers higher in the call stack from using the code that calls this method to access all resources except for the resource specified by the current instance.

(継承元 CodeAccessPermission)
ToString()

現在のアクセス許可オブジェクトの文字列形式を作成して返します。Creates and returns a string representation of the current permission object.

(継承元 CodeAccessPermission)
ToXml()

WebPermission とその現在の状態を表す XML エンコーディングを作成します。Creates an XML encoding of a WebPermission and its current state.

Union(IPermission)

WebPermission クラスの 2 つのインスタンス間の論理和集合を返します。Returns the logical union between two instances of the WebPermission class.

明示的なインターフェイスの実装

IPermission.Demand() (継承元 CodeAccessPermission)
IStackWalk.Assert() (継承元 CodeAccessPermission)
IStackWalk.Demand() (継承元 CodeAccessPermission)
IStackWalk.Deny() (継承元 CodeAccessPermission)
IStackWalk.PermitOnly() (継承元 CodeAccessPermission)

適用対象

こちらもご覧ください