Evidence クラス
セキュリティ ポリシーがアクセス許可を決定するときに使用する一連の情報を定義します。このクラスは継承できません。
この型のすべてのメンバの一覧については、Evidence メンバ を参照してください。
System.Object
System.Security.Policy.Evidence
<Serializable>
NotInheritable Public Class Evidence Implements ICollection, IEnumerable
[C#]
[Serializable]
public sealed class Evidence : ICollection, IEnumerable
[C++]
[Serializable]
public __gc __sealed class Evidence : public ICollection, IEnumerable
[JScript]
public
Serializable
class Evidence implements ICollection, IEnumerable
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
一般的な形式の証拠には、署名や、コードの発生源である場所などが含まれますが、どのような情報を含めてもかまいません。セキュリティ ポリシーによって認識される任意の型のオブジェクトが証拠を表します。
セキュリティ ポリシーは、コード グループで構成されます。アセンブリはセキュリティ アクセス許可を付与されるコードの基本単位ですが、コード グループのメンバシップ条件を満たしている場合に、そのコード グループのメンバになります。証拠とは、ポリシーに渡される一連の情報であり、アセンブリが属しているコード グループを判断するためにメンバシップ条件によって使用されます。
Evidence クラスは、証拠を表すオブジェクト セットを格納しているコレクション (ICollection のトピックを参照) です。このクラスには、証拠の提供元 (ホストおよびアセンブリ) に対応する 2 つの証拠セットが格納されます。
ポリシーは、コードに与えるアクセス許可を評価するときに、2 つの異なる提供元から証拠を取得できます。
- Host evidence はホストによって提供されますが、 ControlEvidence アクセス許可を与えられたホストだけが提供できます。通常、この証拠は、コードの発生源とアセンブリのデジタル署名から成る証拠です。通常、発生源に関する証拠には、 Url 、 Site 、 Zone の各証拠が含まれます。署名は、ソフトウェアの発行元 (AuthentiCode X.509v3 署名) ID と厳密な名前 ID を参照します。これらのデジタル署名ベースの ID はいずれもアセンブリに組み込まれますが、ホストによって検証されてからポリシーに渡される必要があります。これらの署名は、読み込み時にセキュリティ システムによって検証されます。システムは、検証後に適切な証拠を作成し、その証拠は対応する署名が有効な場合にだけポリシーに渡されます。
- Assembly evidence はアセンブリの一部に含まれています。開発者または管理者は、アセンブリにカスタムの証拠を追加して、ポリシーに渡す証拠セットを拡張できます。アセンブリに証拠を追加できるのは、アセンブリの生成時で、そのアセンブリに署名する前に限られます。セキュリティ システムの既定のポリシーは、アセンブリから提供される証拠を無視しますが、この証拠を認識するように拡張できます。
使用例
[Visual Basic, C#] ホストおよびアセンブリが提供する 2 つの証拠を使用して、新しい Evidence クラスを作成する方法を次の例に示します。
Imports System
Imports System.Collections
Imports System.Security
Imports System.Security.Policy
Imports System.Security.Permissions
Module Module1
_
Public Class Evidence_Constructors
Public Function CreateEvidence() As Boolean
Dim retVal As Boolean = True
Try
' Create default contructor.
Dim ev1 As New Evidence()
Console.WriteLine("Created empty evidence with the default constructor")
' Constructor for null host evidence.
Dim ev2a As New Evidence(Nothing)
Console.WriteLine("Created evidence with a null host evidence ")
' Constructor to copy host evidence.
Dim url As New Url("http://www.treyresearch.com")
Console.WriteLine(("Adding host evidence " + url.ToString()))
ev2a.AddHost(url)
Dim ev2b As New Evidence(ev2a)
Console.WriteLine("Copy evidence into new evidence")
Dim enum1 As IEnumerator = ev2b.GetHostEnumerator()
enum1.MoveNext()
Console.WriteLine(enum1.Current.ToString())
' Constructor to copy host and assembly evidence separately.
Dim oa1() As [Object]
Dim site As New Site("www.wideworldimporters.com")
Dim oa2 As [Object]() = {url, site}
Dim ev3a As New Evidence(oa1, oa2)
enum1 = ev3a.GetHostEnumerator()
Dim enum2 As IEnumerator = ev3a.GetAssemblyEnumerator()
enum2.MoveNext()
Dim obj1 As [Object] = enum2.Current
enum2.MoveNext()
Console.WriteLine(("URL = " + obj1.ToString() + " Site = " + enum2.Current.ToString()))
' Constructor to copy null host and assembly evidence.
Dim ev3b As New Evidence(Nothing, Nothing)
Console.WriteLine("Create new evidence with null host and assembly evidence")
Catch e As Exception
Console.WriteLine("Fatal error: {0}", e.ToString())
Return False
End Try
Return retVal
End Function 'CreateEvidence
Public Shared Sub Main()
Try
Dim EvidenceTest As New Evidence_Constructors()
Dim ret As Boolean = EvidenceTest.CreateEvidence()
If ret Then
Console.WriteLine("Evidence_Constructors -- Done.")
Else
Console.WriteLine("Evidence_Constructors -- Fail.")
End If
Catch e As Exception
Console.WriteLine(e.ToString())
Environment.ExitCode = 101
End Try
End Sub 'Main
End Class 'Evidence_Constructors
End Module
[C#]
using System;
using System.Collections;
using System.Security;
using System.Security.Policy;
using System.Security.Permissions;
public class Evidence_Constructors
{
public bool CreateEvidence()
{
bool retVal = true;
try
{
// Create default contructor.
Evidence ev1 = new Evidence();
Console.WriteLine("Created empty evidence with the default constructor");
// Constructor for null host evidence.
Evidence ev2a = new Evidence(null);
Console.WriteLine("Created evidence with a null host evidence ");
// Constructor to copy host evidence.
Url url = new Url("http://www.treyresearch.com");
Console.WriteLine("Adding host evidence " + url.ToString());
ev2a.AddHost(url);
Evidence ev2b = new Evidence(ev2a);
Console.WriteLine("Copy evidence into new evidence");
IEnumerator enum1 = ev2b.GetHostEnumerator();
enum1.MoveNext();
Console.WriteLine(enum1.Current.ToString());
// Constructor to copy host and assembly evidence separately.
Object [] oa1 = {};
Site site = new Site("www.wideworldimporters.com");
Object [] oa2 = { url, site };
Evidence ev3a = new Evidence(oa1, oa2);
enum1 = ev3a.GetHostEnumerator();
IEnumerator enum2 = ev3a.GetAssemblyEnumerator();
enum2.MoveNext();
Object obj1 = enum2.Current;
enum2.MoveNext();
Console.WriteLine("URL = " + obj1.ToString() + " Site = " + enum2.Current.ToString());
// Constructor to copy null host and assembly evidence.
Evidence ev3b = new Evidence(null, null);
Console.WriteLine("Create new evidence with null host and assembly evidence");
}
catch (Exception e)
{
Console.WriteLine("Fatal error: {0}", e.ToString());
return false;
}
return retVal;
}
public static void Main()
{
try
{
Evidence_Constructors EvidenceTest = new Evidence_Constructors();
bool ret = EvidenceTest.CreateEvidence();
if (ret)
{
Console.WriteLine("Evidence_Constructors -- Done.");
}
else
{
Console.WriteLine("Evidence_Constructors -- Fail.");
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
Environment.ExitCode = 101;
}
}
}
[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Security.Policy
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: Mscorlib (Mscorlib.dll 内)