SiteIdentityPermission クラス
コードのダウンロード元の Web サイトに対して ID アクセス許可を定義します。このクラスは継承できません。
この型のすべてのメンバの一覧については、SiteIdentityPermission メンバ を参照してください。
System.Object
System.Security.CodeAccessPermission
System.Security.Permissions.SiteIdentityPermission
<Serializable>
NotInheritable Public Class SiteIdentityPermission Inherits CodeAccessPermission
[C#]
[Serializable]
public sealed class SiteIdentityPermission : CodeAccessPermission
[C++]
[Serializable]
public __gc __sealed class SiteIdentityPermission : public CodeAccessPermission
[JScript]
public
Serializable
class SiteIdentityPermission extends CodeAccessPermission
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
このクラスを使用すると、呼び出し元が特定の Web サイトであることを確認できます。サイト ID は、HTTP、HTTPS、および FTP のプロトコルの付いた URL からのコードだけで定義されます。URL のプロトコルの後ろの "//" から次の "/" までの間に文字列がある場合は、その文字列がサイトを表します。たとえば、URL https://www.fourthcoffee.com/process/grind.htm の www.fourthcoffee.com がサイトです。ポート番号は除外されます。URL が https://www.fourthcoffee.com:8000/ の場合、サイトは www.fourthcoffee.com:8000 ではなく www.fourthcoffee.com になります。
サイトには、完全に一致する文字列か、ドット区切り文字の前にワイルドカード ("*") を付けた文字列を指定できます。たとえば、サイト名として文字列 *.fourthcoffee.com を指定すると、fourthcoffee.com と www.fourthcoffee.com の両方と一致します。ワイルドカードを使用しない場合、正確に一致するサイト名だけが見つかります。サイト名として文字列 * を指定した場合、任意のサイトと一致しますが、サイト証拠のないコードとは一致しません。
注意 SiteIdentityPermission は、URL と IP アドレスを含め、サイトへのすべてのパスに対するアクセス許可を与えます。サイトへのアクセスを Deny によって拒否するには、そのサイトへの有効なパスをすべて Deny によって拒否する必要があります。たとえば、www.forthcoffee.com の IP アドレスが 192.168.238.241 の場合、www.forthcoffee.com へのアクセスを Deny によって拒否するには、www.forthcoffee.com、192.168.238.241 を含め、そのサイトにアクセスために使用できるすべてのパスを Deny によって拒否する必要があります。複数のパスを使用する場合は、 PermitOnly と Deny を組み合わせて使用することをお勧めします。この詳細および Deny で PermitOnly を使用する場合の詳細については、「 Deny 」の Canonicalization Problems Using Deny を参照してください。
使用例
' This sample demonstrates the IsSubsetOf, Union, Intersect, Copy, ToXml and FromXml methods
' of the SiteIdentityPermission class.
Imports System
Imports System.Security
Imports System.Security.Permissions
Imports Microsoft.VisualBasic
<Assembly: CLSCompliant(True)>
Public Class SiteIdentityPermissionDemo
' IsSubsetOf determines whether the current permission is a subset of the specified permission.
Private Function IsSubsetOfDemo() As Boolean
Dim returnCodeCode As Boolean = True
Dim site1, site2 As [String]
Dim successFlag As Boolean
Dim siteIdPerm1, siteIdPerm2 As SiteIdentityPermission
Dim siteGen1 As New SiteGenerator()
Dim siteGen2 As New SiteGenerator()
siteGen1.ResetIndex()
While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
If siteIdPerm1 Is Nothing Or successFlag = False Then
GoTo ContinueWhile1
End If
siteGen2.ResetIndex()
Console.WriteLine("**************************************************************************")
While siteGen2.CreateSite(siteIdPerm2, site2, successFlag)
Try
If siteIdPerm2 Is Nothing Or successFlag = False Then
GoTo ContinueWhile2
End If
If siteIdPerm1.IsSubsetOf(siteIdPerm2) Then
Console.WriteLine((site1 & " is a subset of " & site2))
Else
Console.WriteLine((site1 & " is not a subset of " & site2))
End If
Catch e As Exception
Console.WriteLine(("An exception was thrown : " & e.ToString()))
Return False
End Try
ContinueWhile2:
End While
ContinueWhile1:
End While
Return returnCodeCode
End Function 'IsSubsetOfDemo
' Union creates a new permission that is the union of the current permission
' and the specified permission.
Private Function UnionDemo() As Boolean
Dim returnCodeCode As Boolean = True
Dim site1, site2 As [String]
Dim successFlag As Boolean
Dim siteIdPerm1, siteIdPerm2, p3 As SiteIdentityPermission
Dim siteGen1 As New SiteGenerator()
Dim siteGen2 As New SiteGenerator()
siteGen1.ResetIndex()
While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
If siteIdPerm1 Is Nothing Or successFlag = False Then
GoTo ContinueWhile1
End If
siteGen2.ResetIndex()
Console.WriteLine("**************************************************************************")
While siteGen2.CreateSite(siteIdPerm2, site2, successFlag)
If siteIdPerm2 Is Nothing Or successFlag = False Then
GoTo ContinueWhile2
End If
Dim firstSite As [String] = IIf(site1 Is Nothing, "null", site1)
Dim secondSite As [String] = IIf(site2 Is Nothing, "null", site2)
Try
p3 = CType(siteIdPerm1.Union(siteIdPerm2), SiteIdentityPermission)
Dim thirdSite As [String] = IIf(p3.Site Is Nothing, "null", p3.Site.ToString())
If Not (p3 Is Nothing) Then
Console.WriteLine(("The union of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = " & ControlChars.Lf & ControlChars.Tab & thirdSite & ControlChars.Lf))
Else
Console.WriteLine(("The union of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = null." & ControlChars.Lf))
End If
Catch
' Expected exception, result of the union is null.
Console.WriteLine(("The union of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = null." & ControlChars.Lf))
End Try
ContinueWhile2:
End While
ContinueWhile1:
End While
Return returnCodeCode
End Function 'UnionDemo
' Intersect creates and returns a new permission that is the intersection of the
' current permission and the permission specified.
Private Function IntersectDemo() As Boolean
Dim returnCodeCode As Boolean = True
Dim site1, site2 As [String]
Dim successFlag As Boolean
Dim siteIdPerm1, siteIdPerm2, p3 As SiteIdentityPermission
Dim siteGen1 As New SiteGenerator()
Dim siteGen2 As New SiteGenerator()
siteGen1.ResetIndex()
While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
If siteIdPerm1 Is Nothing Or successFlag = False Then
GoTo ContinueWhile1
End If
siteGen2.ResetIndex()
Console.WriteLine("**************************************************************************")
While siteGen2.CreateSite(siteIdPerm2, site2, successFlag)
If siteIdPerm2 Is Nothing Or successFlag = False Then
GoTo ContinueWhile2
End If
Dim firstSite As [String] = IIf(site1 Is Nothing, "null", site1)
Dim secondSite As [String] = IIf(site2 Is Nothing, "null", site2)
Try
p3 = CType(siteIdPerm1.Intersect(siteIdPerm2), SiteIdentityPermission)
Dim thirdSite As [String] = IIf(p3.Site Is Nothing, "null", p3.Site.ToString())
If Not (p3 Is Nothing) Then
Console.WriteLine(("The intersection of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = " & thirdSite & ControlChars.Lf))
Else
Console.WriteLine(("The intersection of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = null." & ControlChars.Lf))
End If
Catch
Console.WriteLine(("The intersection of " & firstSite & " and " & ControlChars.Lf & ControlChars.Tab & secondSite & " = null." & ControlChars.Lf))
End Try
ContinueWhile2:
End While
ContinueWhile1:
End While
Return returnCodeCode
End Function 'IntersectDemo
'Copy creates and returns an identical copy of the current permission.
Private Function CopyDemo() As Boolean
Dim returnCodeCode As Boolean = True
Dim site1 As [String]
Dim siteIdPerm1, siteIdPerm2 As SiteIdentityPermission
Dim successFlag As Boolean
Dim siteGen1 As New SiteGenerator()
Dim siteGen2 As New SiteGenerator()
siteGen1.ResetIndex()
While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
If siteIdPerm1 Is Nothing Or successFlag = False Then
GoTo ContinueWhile1
End If
siteGen2.ResetIndex()
Console.WriteLine("**************************************************************************")
Try
siteIdPerm2 = CType(siteIdPerm1.Copy(), SiteIdentityPermission)
If Not (siteIdPerm2 Is Nothing) Then
Console.WriteLine(("The copy of " & siteIdPerm2.ToString() & " succeeded." & ControlChars.Lf))
End If
Catch e As Exception
Console.WriteLine(("The copy failed : " & siteIdPerm1.ToString() & e.ToString()))
GoTo ContinueWhile1
End Try
ContinueWhile1:
End While
Return returnCodeCode
End Function 'CopyDemo
' ToXml creates an XML encoding of the permission and its current state; FromXml reconstructs a
' permission with the specified state from the XML encoding.
Private Function ToFromXmlDemo() As Boolean
Dim returnCodeCode As Boolean = True
Dim site1 As [String]
Dim siteIdPerm1, siteIdPerm2 As SiteIdentityPermission
Dim successFlag As Boolean
Dim siteGen1 As New SiteGenerator()
Dim siteGen2 As New SiteGenerator()
siteGen1.ResetIndex()
While siteGen1.CreateSite(siteIdPerm1, site1, successFlag)
If siteIdPerm1 Is Nothing Or successFlag = False Then
GoTo ContinueWhile1
End If
siteGen2.ResetIndex()
Console.WriteLine("**************************************************************************")
Try
siteIdPerm2 = New SiteIdentityPermission(PermissionState.None.ToString())
siteIdPerm2.FromXml(siteIdPerm1.ToXml())
Dim result As Boolean = siteIdPerm2.Equals(siteIdPerm1)
If siteIdPerm2.IsSubsetOf(siteIdPerm1) AndAlso siteIdPerm1.IsSubsetOf(siteIdPerm2) Then
Console.WriteLine(("Result of ToFromXml = " & siteIdPerm2.ToString()))
Else
Console.WriteLine(siteIdPerm2.ToString())
Console.WriteLine(siteIdPerm1.ToString())
End If
Catch e As Exception
Console.WriteLine(("ToFromXml failed. " & e.ToString()))
GoTo ContinueWhile1
End Try
ContinueWhile1:
End While
Return returnCodeCode
End Function 'ToFromXmlDemo
' Invoke all demos.
Public Function RunDemo() As Boolean
Dim returnCode As Boolean = True
Dim tempReturnCode As Boolean
' Call the IsSubsetOf demo.
tempReturnCode = IsSubsetOfDemo()
If tempReturnCode Then
Console.Out.WriteLine("The IsSubsetOf demo completed successfully.")
Else
Console.Out.WriteLine("subsetDemo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
' Call the Union demo.
tempReturnCode = UnionDemo()
If tempReturnCode Then
Console.Out.WriteLine("The Union demo completed successfully.")
Else
Console.Out.WriteLine("UnionDemo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
' Call the Intersect demo.
tempReturnCode = IntersectDemo()
If tempReturnCode Then
Console.Out.WriteLine("The Intersect demo completed successfully.")
Else
Console.Out.WriteLine("IntersectDemo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
' Call the Copy demo.
tempReturnCode = CopyDemo()
If tempReturnCode Then
Console.Out.WriteLine("The Copy demo completed successfully.")
Else
Console.Out.WriteLine("CopyDemo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
' Call the ToFromXML demo.
tempReturnCode = ToFromXmlDemo()
If tempReturnCode Then
Console.Out.WriteLine("The ToFromXML demo completed successfully.")
Else
Console.Out.WriteLine("ToFromXmlDemo failed.")
End If
returnCode = tempReturnCode AndAlso returnCode
Return returnCode
End Function 'RunDemo
' Test harness.
Public Overloads Shared Sub Main(ByVal args() As [String])
Try
Dim testcase As New SiteIdentityPermissionDemo()
Dim returnCode As Boolean = testcase.RunDemo()
If returnCode Then
Console.Out.WriteLine("The SiteIdentityPermission demo completed successfully.")
Console.Out.WriteLine("Press the Enter key to exit.")
Dim consoleInput As String = Console.ReadLine()
System.Environment.ExitCode = 100
Else
Console.Out.WriteLine("The SiteIdentityPermission demo failed.")
Console.Out.WriteLine("Press the Enter key to exit.")
Dim consoleInput As String = Console.ReadLine()
System.Environment.ExitCode = 101
End If
Catch e As Exception
Console.Out.WriteLine("The SiteIdentityPermission demo failed.")
Console.WriteLine(e.ToString())
Console.Out.WriteLine("Press the Enter key to exit.")
Dim consoleInput As String = Console.ReadLine()
System.Environment.ExitCode = 101
End Try
End Sub 'Main
End Class 'SiteIdentityPermissionDemo
' This class generates SiteIdentityPermission objects.
Friend Class SiteGenerator
Private siteArray As String() = {"www.northwindtraders.northwindtraders.com", "*.northwindtraders.com", "*.margiestravel.com", "northwindtraders.com", "*northwindtraders.com", ""}
' Replace this array with Web sites of your own choosing.
Private siteIndex As Integer = 0
Public Sub New()
ResetIndex()
End Sub 'New
Public Sub ResetIndex()
siteIndex = 0
End Sub 'ResetIndex
' CreateSite creates a SiteIdentityPermission.
Public Function CreateSite(ByRef sitePerm As SiteIdentityPermission, ByRef site As String, ByRef successFlag As Boolean) As Boolean
successFlag = True
If siteIndex >= siteArray.Length Then
sitePerm = New SiteIdentityPermission(PermissionState.None.ToString())
site = "null"
Return False
End If
site = siteArray(siteIndex)
siteIndex = siteIndex + 1
Try
sitePerm = New SiteIdentityPermission(site.ToString())
Return True
Catch e As ArgumentException
Console.WriteLine(("An ArgumentException was thrown: " & e.Message.ToString()))
successFlag = False
If Not (site Is Nothing) AndAlso site <> "" Then
Console.WriteLine((site & " is an invalid site."))
ElseIf site = "" Then
Console.WriteLine("An empty string signifies an invalid site.")
site = "an empty string"
Else
sitePerm = New SiteIdentityPermission(PermissionState.None.ToString())
Console.WriteLine(e.ToString())
site = "null"
Return False
End If
sitePerm = New SiteIdentityPermission(PermissionState.None.ToString())
Return True
End Try
End Function 'CreateSite
End Class 'SiteGenerator
' End of SiteGenerator.
[C#]
// This sample demonstrates the IsSubsetOf, Union, Intersect, Copy, ToXml and FromXml methods
// of the SiteIdentityPermission class.
using System;
using System.Security;
using System.Security.Permissions;
[assembly:CLSCompliant(true)]
public class SiteIdentityPermissionDemo
{
// IsSubsetOf determines whether the current permission is a subset of the specified permission.
private bool IsSubsetOfDemo()
{
bool returnCodeCode = true;
String site1,site2;
bool successFlag;
SiteIdentityPermission siteIdPerm1,siteIdPerm2;
SiteGenerator siteGen1 = new SiteGenerator();
SiteGenerator siteGen2 = new SiteGenerator();
siteGen1.ResetIndex();
while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag))
{
if(siteIdPerm1 == null | successFlag == false) continue;
siteGen2.ResetIndex();
Console.WriteLine("**************************************************************************");
while(siteGen2.CreateSite(out siteIdPerm2, out site2, out successFlag))
{
try
{
if(siteIdPerm2 == null | successFlag == false) continue;
if(siteIdPerm1.IsSubsetOf(siteIdPerm2))
{
Console.WriteLine(site1 + " is a subset of " + site2);
}
else
{
Console.WriteLine(site1 + " is not a subset of " + site2);
}
}
catch (Exception e)
{
Console.WriteLine ( "An exception was thrown : " + e);
return false;
}
}
}
return returnCodeCode;
}
// Union creates a new permission that is the union of the current permission
// and the specified permission.
private bool UnionDemo()
{
bool returnCodeCode = true;
String site1,site2;
bool successFlag;
SiteIdentityPermission siteIdPerm1,siteIdPerm2,p3;
SiteGenerator siteGen1 = new SiteGenerator();
SiteGenerator siteGen2 = new SiteGenerator();
siteGen1.ResetIndex();
while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag))
{
if(siteIdPerm1 == null | successFlag == false) continue;
siteGen2.ResetIndex();
Console.WriteLine("**************************************************************************");
while(siteGen2.CreateSite(out siteIdPerm2, out site2, out successFlag)) {
if(siteIdPerm2 == null | successFlag == false) continue;
String firstSite = site1 == null ? "null" : site1;
String secondSite = site2 == null ? "null" : site2;
try
{
p3 = (SiteIdentityPermission)siteIdPerm1.Union(siteIdPerm2);
String thirdSite = p3.Site == null ? "null" : p3.Site;
if(p3 != null)
{
Console.WriteLine("The union of " + firstSite + " and \n\t" + secondSite + " = \n\t"
+ thirdSite + "\n");
}
else
{
Console.WriteLine("The union of " + firstSite + " and \n\t" + secondSite + " = null.\n");
}
}
catch
{
// Expected exception, result of the union is null.
Console.WriteLine("The union of " + firstSite + " and \n\t" + secondSite + " = null.\n");
}
}
}
return returnCodeCode;
}
// Intersect creates and returns a new permission that is the intersection of the
// current permission and the permission specified.
private bool IntersectDemo()
{
bool returnCodeCode = true;
String site1,site2;
bool successFlag;
SiteIdentityPermission siteIdPerm1,siteIdPerm2,p3;
SiteGenerator siteGen1 = new SiteGenerator();
SiteGenerator siteGen2 = new SiteGenerator();
siteGen1.ResetIndex();
while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag))
{
if(siteIdPerm1 == null | successFlag == false) continue;
siteGen2.ResetIndex();
Console.WriteLine("**************************************************************************");
while(siteGen2.CreateSite(out siteIdPerm2, out site2, out successFlag))
{
if(siteIdPerm2 == null | successFlag == false) continue;
String firstSite = site1 == null ? "null" : site1;
String secondSite = site2 == null ? "null" : site2;
try
{
p3 = (SiteIdentityPermission)siteIdPerm1.Intersect(siteIdPerm2);
String thirdSite = p3.Site == null ? "null" : p3.Site;
if(p3 != null)
{
Console.WriteLine("The intersection of " + firstSite + " and \n\t" + secondSite + " = " + thirdSite + "\n");
}
else
{
Console.WriteLine("The intersection of " + firstSite + " and \n\t" + secondSite + " = null.\n");
}
}
catch
{
Console.WriteLine("The intersection of " + firstSite + " and \n\t" + secondSite + " = null.\n");
}
}
}
return returnCodeCode;
}
//Copy creates and returns an identical copy of the current permission.
private bool CopyDemo()
{
bool returnCodeCode = true;
String site1;
SiteIdentityPermission siteIdPerm1,siteIdPerm2;
bool successFlag;
SiteGenerator siteGen1 = new SiteGenerator();
SiteGenerator siteGen2 = new SiteGenerator();
siteGen1.ResetIndex();
while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag))
{
if(siteIdPerm1 == null | successFlag == false) continue;
siteGen2.ResetIndex();
Console.WriteLine("**************************************************************************");
try{
siteIdPerm2 = (SiteIdentityPermission)siteIdPerm1.Copy();
if (siteIdPerm2 != null )
{
Console.WriteLine("The copy of " + siteIdPerm2.ToString() + " succeeded.\n");
}
}
catch(Exception e)
{
Console.WriteLine("The copy failed : " + siteIdPerm1.ToString() + e);
continue;
}
}
return returnCodeCode;
}
// ToXml creates an XML encoding of the permission and its current state; FromXml reconstructs a
// permission with the specified state from the XML encoding.
private bool ToFromXmlDemo()
{
bool returnCodeCode = true;
String site1;
SiteIdentityPermission siteIdPerm1,siteIdPerm2;
bool successFlag;
SiteGenerator siteGen1 = new SiteGenerator();
SiteGenerator siteGen2 = new SiteGenerator();
siteGen1.ResetIndex();
while(siteGen1.CreateSite(out siteIdPerm1, out site1, out successFlag))
{
if(siteIdPerm1 == null | successFlag == false) continue;
siteGen2.ResetIndex();
Console.WriteLine("**************************************************************************");
try
{
siteIdPerm2= new SiteIdentityPermission(PermissionState.None);
siteIdPerm2.FromXml(siteIdPerm1.ToXml());
bool result = siteIdPerm2.Equals(siteIdPerm1);
if (siteIdPerm2.IsSubsetOf(siteIdPerm1) && siteIdPerm1.IsSubsetOf(siteIdPerm2))
{
Console.WriteLine("Result of ToFromXml = " + siteIdPerm2.ToString());
}
else
{
Console.WriteLine(siteIdPerm2.ToString());
Console.WriteLine(siteIdPerm1.ToString());
}
}
catch(Exception e) {
Console.WriteLine("ToFromXml failed. " + e);
continue;
}
}
return returnCodeCode;
}
// Invoke all demos.
public bool RunDemo()
{
bool returnCode=true;
bool tempReturnCode;
// Call the IsSubsetOf demo.
if(tempReturnCode= IsSubsetOfDemo())Console.Out.WriteLine("The IsSubsetOf demo completed successfully.");
else Console.Out.WriteLine("subsetDemo failed.");
returnCode=tempReturnCode && returnCode;
// Call the Union demo.
if(tempReturnCode= UnionDemo())Console.Out.WriteLine("The Union demo completed successfully.");
else Console.Out.WriteLine("UnionDemo failed.");
returnCode=tempReturnCode && returnCode;
// Call the Intersect demo.
if(tempReturnCode= IntersectDemo())Console.Out.WriteLine("The Intersect demo completed successfully.");
else Console.Out.WriteLine("IntersectDemo failed.");
returnCode=tempReturnCode && returnCode;
// Call the Copy demo.
if(tempReturnCode= CopyDemo())Console.Out.WriteLine("The Copy demo completed successfully.");
else Console.Out.WriteLine("CopyDemo failed.");
returnCode=tempReturnCode && returnCode;
// Call the ToFromXML demo.
if(tempReturnCode= ToFromXmlDemo())Console.Out.WriteLine("The ToFromXML demo completed successfully.");
else Console.Out.WriteLine("ToFromXmlDemo failed.");
returnCode=tempReturnCode && returnCode;
return ( returnCode );
}
// Test harness.
public static void Main(String[] args)
{
try
{
SiteIdentityPermissionDemo testcase = new SiteIdentityPermissionDemo();
bool returnCode = testcase.RunDemo();
if (returnCode)
{
Console.Out.WriteLine("The SiteIdentityPermission demo completed successfully.");
Console.Out.WriteLine("Press the Enter key to exit.");
string consoleInput = Console.ReadLine();
System.Environment.ExitCode = 100;
}
else
{
Console.Out.WriteLine("The SiteIdentityPermission demo failed.");
Console.Out.WriteLine("Press the Enter key to exit.");
string consoleInput = Console.ReadLine();
System.Environment.ExitCode = 101;
}
}
catch(Exception e)
{
Console.Out.WriteLine("The SiteIdentityPermission demo failed.");
Console.WriteLine(e.ToString());
Console.Out.WriteLine("Press the Enter key to exit.");
string consoleInput = Console.ReadLine();
System.Environment.ExitCode = 101;
}
}
}
// This class generates SiteIdentityPermission objects.
internal class SiteGenerator
{
private string[] siteArray =
// Replace this array with Web sites of your own choosing.
{"www.northwindtraders.northwindtraders.com",
"*.northwindtraders.com",
"*.margiestravel.com","northwindtraders.com",
"*northwindtraders.com",""};
private int siteIndex = 0;
public SiteGenerator()
{
ResetIndex();
}
public void ResetIndex()
{
siteIndex = 0;
}
// CreateSite creates a SiteIdentityPermission.
public bool CreateSite(out SiteIdentityPermission sitePerm, out string site, out bool successFlag)
{
successFlag = true;
if(siteIndex >= siteArray.Length)
{
sitePerm = new SiteIdentityPermission(PermissionState.None);
site="null";
return false;
}
site = siteArray[siteIndex++];
try
{
sitePerm = new SiteIdentityPermission(site);
return true;
}
catch(ArgumentException e)
{
Console.WriteLine("An ArgumentException was thrown: " + e.Message);
successFlag = false;
if (site != null && site != "")
{
Console.WriteLine(site + " is an invalid site.");
}
else if (site == "")
{
Console.WriteLine("An empty string signifies an invalid site.");
site = "an empty string";
}
else
{
sitePerm = new SiteIdentityPermission(PermissionState.None);
Console.WriteLine(e);
site = "null";
return false;
}
sitePerm = new SiteIdentityPermission(PermissionState.None);
return true;
}
}
} // End of SiteGenerator.
[C++]
// This sample demonstrates the IsSubsetOf, Union, Intersect, Copy, ToXml and FromXml methods
// of the SiteIdentityPermission class.
#using <mscorlib.dll>
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Runtime::InteropServices;
[assembly:CLSCompliant(true)];
// This class generates SiteIdentityPermission objects.
private __gc class SiteGenerator {
private:
String* siteArray[];
int siteIndex;
public:
SiteGenerator() {
// Replace this array with Web sites of your own choosing.
String* temp[] = {S"www.northwindtraders.northwindtraders.com",
S"*.northwindtraders.com",
S"*.margiestravel.com", S"northwindtraders.com",
S"*northwindtraders.com", S""};
siteArray = temp;
ResetIndex();
}
void ResetIndex() {
siteIndex = 0;
}
// CreateSite creates a SiteIdentityPermission.
bool CreateSite(
[Out] SiteIdentityPermission** sitePerm,
[Out] String** site,
[Out] bool* successFlag) {
*successFlag = true;
if (siteIndex >= siteArray->Length) {
*sitePerm = new SiteIdentityPermission(PermissionState::None);
*site=S"null";
return false;
}
*site = siteArray[siteIndex++];
try {
*sitePerm = new SiteIdentityPermission(*site);
return true;
} catch (ArgumentException* e) {
Console::WriteLine(S"An ArgumentException was thrown: {0}", e->Message);
*successFlag = false;
if (*site != 0 && !(*site)->Equals(S"")) {
Console::WriteLine(S"{0} is an invalid site.", *site);
} else if ((*site)->Equals(S"")) {
Console::WriteLine(S"An empty string signifies an invalid site.");
*site = S"an empty string";
} else {
*sitePerm = new SiteIdentityPermission(PermissionState::None);
Console::WriteLine(e);
*site = S"null";
return false;
}
*sitePerm = new SiteIdentityPermission(PermissionState::None);
return true;
}
}
}; // End of SiteGenerator.
public __gc class SiteIdentityPermissionDemo {
// IsSubsetOf determines whether the current permission is a subset of the specified permission.
bool IsSubsetOfDemo() {
bool returnCodeCode = true;
String* site1, *site2;
bool successFlag;
SiteIdentityPermission* siteIdPerm1, *siteIdPerm2;
SiteGenerator* siteGen1 = new SiteGenerator();
SiteGenerator* siteGen2 = new SiteGenerator();
siteGen1->ResetIndex();
while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
if (siteIdPerm1 == 0 || successFlag == false) continue;
siteGen2->ResetIndex();
Console::WriteLine(S"**************************************************************************");
while(siteGen2->CreateSite(&siteIdPerm2, &site2, &successFlag)) {
try {
if (siteIdPerm2 == 0 || successFlag == false) continue;
if (siteIdPerm1->IsSubsetOf(siteIdPerm2)) {
Console::WriteLine(S"{0} is a subset of {1}", site1, site2);
} else {
Console::WriteLine(S"{0} is not a subset of {1}", site1, site2);
}
} catch (Exception* e) {
Console::WriteLine (S"An exception was thrown : {0}", e);
return false;
}
}
}
return returnCodeCode;
}
// Union creates a new permission that is the union of the current permission
// and the specified permission.
bool UnionDemo() {
bool returnCodeCode = true;
String* site1, *site2;
bool successFlag;
SiteIdentityPermission* siteIdPerm1, *siteIdPerm2, *p3;
SiteGenerator* siteGen1 = new SiteGenerator();
SiteGenerator* siteGen2 = new SiteGenerator();
siteGen1->ResetIndex();
while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
if (siteIdPerm1 == 0 || successFlag == false) continue;
siteGen2->ResetIndex();
Console::WriteLine(S"**************************************************************************");
while(siteGen2->CreateSite(&siteIdPerm2, &site2, &successFlag)) {
if (siteIdPerm2 == 0 || successFlag == false) continue;
String* firstSite = site1 == 0 ? S"null" : site1;
String* secondSite = site2 == 0 ? S"null" : site2;
try {
p3 = dynamic_cast<SiteIdentityPermission*>(siteIdPerm1->Union(siteIdPerm2));
String* thirdSite = p3->Site == 0 ? S"null" : p3->Site;
if (p3 != 0) {
Console::WriteLine(S"The union of {0} and \n\t{1} = \n\t{2}\n",
firstSite, secondSite, thirdSite);
} else {
Console::WriteLine(S"The union of {0} and \n\t{1} = null.\n", firstSite, secondSite);
}
} catch (Exception*) {
// Expected exception, result of the union is 0.
Console::WriteLine(S"The union of {0} and \n\t{1} = null.\n", firstSite, secondSite);
}
}
}
return returnCodeCode;
}
// Intersect creates and returns a new permission that is the intersection of the
// current permission and the permission specified.
bool IntersectDemo() {
bool returnCodeCode = true;
String* site1, *site2;
bool successFlag;
SiteIdentityPermission *siteIdPerm1, *siteIdPerm2, *p3;
SiteGenerator* siteGen1 = new SiteGenerator();
SiteGenerator* siteGen2 = new SiteGenerator();
siteGen1->ResetIndex();
while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
if (siteIdPerm1 == 0 || successFlag == false) continue;
siteGen2->ResetIndex();
Console::WriteLine(S"**************************************************************************");
while(siteGen2->CreateSite(&siteIdPerm2, &site2, &successFlag)) {
if (siteIdPerm2 == 0 || successFlag == false) continue;
String* firstSite = site1 == 0 ? S"0" : site1;
String* secondSite = site2 == 0 ? S"0" : site2;
try {
p3 = dynamic_cast<SiteIdentityPermission*>(siteIdPerm1->Intersect(siteIdPerm2));
String* thirdSite = p3->Site == 0 ? S"0" : p3->Site;
if (p3 != 0) {
Console::WriteLine(S"The intersection of {0} and \n\t{1} = {2}\n",
firstSite, secondSite, thirdSite);
} else {
Console::WriteLine(S"The intersection of {0} and \n\t{1} = null.\n", firstSite, secondSite);
}
} catch (Exception*) {
Console::WriteLine(S"The intersection of {0} and \n\t{1} = null.\n", firstSite, secondSite);
}
}
}
return returnCodeCode;
}
//Copy creates and returns an identical copy of the current permission.
bool CopyDemo() {
bool returnCodeCode = true;
String* site1;
SiteIdentityPermission* siteIdPerm1, *siteIdPerm2;
bool successFlag;
SiteGenerator* siteGen1 = new SiteGenerator();
SiteGenerator* siteGen2 = new SiteGenerator();
siteGen1->ResetIndex();
while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
if (siteIdPerm1 == 0 || successFlag == false) continue;
siteGen2->ResetIndex();
Console::WriteLine(S"**************************************************************************");
try {
siteIdPerm2 = dynamic_cast<SiteIdentityPermission*>(siteIdPerm1->Copy());
if (siteIdPerm2 != 0) {
Console::WriteLine(S"The copy of {0} succeeded.\n", siteIdPerm2);
}
} catch (Exception* e) {
Console::WriteLine(S"The copy failed : {0}{1}", siteIdPerm1, e);
continue;
}
}
return returnCodeCode;
}
// ToXml creates an XML encoding of the permission and its current state; FromXml reconstructs a
// permission with the specified state from the XML encoding.
bool ToFromXmlDemo() {
bool returnCodeCode = true;
String* site1;
SiteIdentityPermission* siteIdPerm1, *siteIdPerm2;
bool successFlag;
SiteGenerator* siteGen1 = new SiteGenerator();
SiteGenerator* siteGen2 = new SiteGenerator();
siteGen1->ResetIndex();
while(siteGen1->CreateSite(&siteIdPerm1, &site1, &successFlag)) {
if (siteIdPerm1 == 0 || successFlag == false) continue;
siteGen2->ResetIndex();
Console::WriteLine(S"**************************************************************************");
try {
siteIdPerm2 = new SiteIdentityPermission(PermissionState::None);
siteIdPerm2->FromXml(siteIdPerm1->ToXml());
bool result = siteIdPerm2->Equals(siteIdPerm1);
if (siteIdPerm2->IsSubsetOf(siteIdPerm1) && siteIdPerm1->IsSubsetOf(siteIdPerm2)) {
Console::WriteLine(S"Result of ToFromXml = {0}", siteIdPerm2);
} else {
Console::WriteLine(siteIdPerm2);
Console::WriteLine(siteIdPerm1);
}
} catch (Exception* e) {
Console::WriteLine(S"ToFromXml failed. {0}", e);
continue;
}
}
return returnCodeCode;
}
// Invoke all demos.
public:
bool RunDemo() {
bool returnCode=true;
bool tempReturnCode;
// Call the IsSubsetOf demo.
if (tempReturnCode= IsSubsetOfDemo())Console::WriteLine(S"The IsSubsetOf demo completed successfully.");
else Console::WriteLine(S"subsetDemo failed.");
returnCode=tempReturnCode && returnCode;
// Call the Union demo.
if (tempReturnCode= UnionDemo())Console::WriteLine(S"The Union demo completed successfully.");
else Console::WriteLine(S"UnionDemo failed.");
returnCode=tempReturnCode && returnCode;
// Call the Intersect demo.
if (tempReturnCode= IntersectDemo())Console::WriteLine(S"The Intersect demo completed successfully.");
else Console::WriteLine(S"IntersectDemo failed.");
returnCode=tempReturnCode && returnCode;
// Call the Copy demo.
if (tempReturnCode= CopyDemo())Console::WriteLine(S"The Copy demo completed successfully.");
else Console::WriteLine(S"CopyDemo failed.");
returnCode=tempReturnCode && returnCode;
// Call the ToFromXML demo.
if (tempReturnCode= ToFromXmlDemo())Console::WriteLine(S"The ToFromXML demo completed successfully.");
else Console::WriteLine(S"ToFromXmlDemo failed.");
returnCode=tempReturnCode && returnCode;
return (returnCode);
}
};
// Test harness.
int main() {
try {
SiteIdentityPermissionDemo* testcase = new SiteIdentityPermissionDemo();
bool returnCode = testcase->RunDemo();
if (returnCode) {
Console::WriteLine(S"The SiteIdentityPermission demo completed successfully.");
Console::WriteLine(S"Press the Enter key to exit.");
Console::ReadLine();
System::Environment::ExitCode = 100;
} else {
Console::WriteLine(S"The SiteIdentityPermission demo failed.");
Console::WriteLine(S"Press the Enter key to exit.");
Console::ReadLine();
System::Environment::ExitCode = 101;
}
} catch (Exception* e) {
Console::WriteLine(S"The SiteIdentityPermission demo failed.");
Console::WriteLine(e);
Console::WriteLine(S"Press the Enter key to exit.");
Console::ReadLine();
System::Environment::ExitCode = 101;
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Security.Permissions
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: Mscorlib (Mscorlib.dll 内)
参照
SiteIdentityPermission メンバ | System.Security.Permissions 名前空間 | アクセス許可 | アクセス許可の要求 | SiteIdentityPermissionAttribute | Site | SiteMembershipCondition