次の方法で共有


XmlSecureResolver コンストラクター

定義

XmlSecureResolver クラスの新しいインスタンスを初期化します。

オーバーロード

XmlSecureResolver(XmlResolver, PermissionSet)

XmlResolverPermissionSet を指定して、XmlSecureResolver クラスの新しいインスタンスを初期化します。

XmlSecureResolver(XmlResolver, Evidence)

XmlResolverEvidence を指定して、XmlSecureResolver クラスの新しいインスタンスを初期化します。

XmlSecureResolver(XmlResolver, String)

XmlResolver と URL を指定して、XmlSecureResolver クラスの新しいインスタンスを初期化します。

注釈

3 つのコンストラクターは、次の 3 種類のアクセス制限を提供します。

これらの種類の制限の例については、コンストラクターのリファレンス トピックを参照してください。

XmlSecureResolver(XmlResolver, PermissionSet)

XmlResolverPermissionSet を指定して、XmlSecureResolver クラスの新しいインスタンスを初期化します。

public:
 XmlSecureResolver(System::Xml::XmlResolver ^ resolver, System::Security::PermissionSet ^ permissionSet);
public XmlSecureResolver (System.Xml.XmlResolver resolver, System.Security.PermissionSet permissionSet);
new System.Xml.XmlSecureResolver : System.Xml.XmlResolver * System.Security.PermissionSet -> System.Xml.XmlSecureResolver
Public Sub New (resolver As XmlResolver, permissionSet As PermissionSet)

パラメーター

resolver
XmlResolver

XmlSecureResolver によってラップされた XML リゾルバー。

permissionSet
PermissionSet

基になっている XmlResolver に適用するアクセス許可セット。 XmlSecureResolver は、基になっている XML リゾルバーで GetEntity(Uri, String, Type) メソッドを呼び出す前に、アクセス許可セットで PermitOnly() メソッドを呼び出します。

次の例では、カスタマイズされた権限セットを XmlSecureResolver 使用してオブジェクトを構築します。

Object^ GetFile( String^ fileURL, XmlResolver^ resolver )
{
   // Generate the default PermissionSet using the file URL.
   Evidence^ evidence = XmlSecureResolver::CreateEvidenceForUrl( fileURL );
   PermissionSet^ myPermissions = SecurityManager::ResolvePolicy( evidence );
   
   // Modify the PermissionSet to only allow access to http://www.contoso.com.
   // Create a WebPermission which only allows access to http://www.contoso.com.
   WebPermission^ myWebPermission = gcnew WebPermission(
      NetworkAccess::Connect,"http://www.contoso.com" );
   // Replace the existing WebPermission in myPermissions with the updated WebPermission.
   myPermissions->SetPermission( myWebPermission );
   
   // Use the modified PermissionSet to construct the XmlSecureResolver.
   XmlSecureResolver^ sResolver = gcnew XmlSecureResolver( resolver,myPermissions );
   
   // Get the object.
   Uri^ fullUri = sResolver->ResolveUri( nullptr, fileURL );
   return sResolver->GetEntity( fullUri, nullptr, nullptr );
}

public static Object GetFile (String fileURL, XmlResolver resolver) {

  // Generate the default PermissionSet using the file URL.
  Evidence evidence = XmlSecureResolver.CreateEvidenceForUrl(fileURL);
  PermissionSet myPermissions = SecurityManager.ResolvePolicy(evidence);

  // Modify the PermissionSet to only allow access to http://www.contoso.com.
  // Create a WebPermission which only allows access to http://www.contoso.com.
  WebPermission myWebPermission = new WebPermission(NetworkAccess.Connect, "http://www.contoso.com");
  // Replace the existing WebPermission in myPermissions with the updated WebPermission.
  myPermissions.SetPermission(myWebPermission);

  // Use the modified PermissionSet to construct the XmlSecureResolver.
  XmlSecureResolver sResolver = new XmlSecureResolver(resolver, myPermissions);

  // Get the object.
  Uri fullUri = sResolver.ResolveUri(null, fileURL);
  return sResolver.GetEntity(fullUri, null, null);
}

public shared function GetFile (fileURL as String , resolver as XmlResolver) as Object
 
  '  Generate the default PermissionSet using the file URL.
  Dim evidence as Evidence = XmlSecureResolver.CreateEvidenceForUrl(fileURL)
  Dim myPermissions as PermissionSet = SecurityManager.ResolvePolicy(evidence)

  '  Modify the PermissionSet to only allow access to http://www.contoso.com.
  '  Create a WebPermission that only allows access to http://www.contoso.com.
  Dim myWebPermission as WebPermission = new WebPermission(NetworkAccess.Connect, "http://www.contoso.com")
  '  Replace the existing WebPermission in myPermissions with the updated WebPermission.
  myPermissions.SetPermission(myWebPermission)

  '  Use the modified PermissionSet to construct the XmlSecureResolver.
  Dim sResolver as XmlSecureResolver = new XmlSecureResolver(resolver, myPermissions)

  '  Get the object.
  Dim fullUri as Uri = sResolver.ResolveUri(nothing, fileURL)
  return sResolver.GetEntity(fullUri, nothing, nothing)
end function

こちらもご覧ください

適用対象

XmlSecureResolver(XmlResolver, Evidence)

XmlResolverEvidence を指定して、XmlSecureResolver クラスの新しいインスタンスを初期化します。

public:
 XmlSecureResolver(System::Xml::XmlResolver ^ resolver, System::Security::Policy::Evidence ^ evidence);
public XmlSecureResolver (System.Xml.XmlResolver resolver, System.Security.Policy.Evidence evidence);
new System.Xml.XmlSecureResolver : System.Xml.XmlResolver * System.Security.Policy.Evidence -> System.Xml.XmlSecureResolver
Public Sub New (resolver As XmlResolver, evidence As Evidence)

パラメーター

resolver
XmlResolver

XmlSecureResolver によってラップされた XML リゾルバー。

evidence
Evidence

基になる XmlResolver に適用される PermissionSet の作成に使用される証拠。 XmlSecureResolver は、基になる XmlResolverGetEntity(Uri, String, Type) を呼び出す前に、作成された PermissionSetPermitOnly() メソッドを呼び出します。

注釈

考えられるシナリオと、各シナリオに提供する証拠の種類を次に示します。

  • 完全に信頼できる環境で作業している場合は、アセンブリを使用して証拠を作成します。

    Evidence myEvidence = this.GetType().Assembly.Evidence;
    XmlSecureResolver myResolver;
    myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = Me.GetType().Assembly.Evidence
    Dim myResolver As XmlSecureResolver
    myResolver = New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • 半信頼環境で作業している場合、外部ソースからのコードまたはデータがあり、外部ソースの発信元がわかっていて、検証可能な URI がある場合は、URI を使用して証拠を作成します。

    
    Evidence myEvidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI);
    XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), myEvidence);
    
    Dim myEvidence As Evidence = XmlSecureResolver.CreateEvidenceForUrl(sourceURI)
    Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), myEvidence)
    
  • 半信頼環境で作業していて、外部ソースからのコードまたはデータがあるが、外部ソースの原点がわからない場合は、次のいずれかを行います。

    evidence パラメーターを null に設定します。 これは、リソースへのアクセスを禁止します。

    • または -

    アプリケーションでリソースへのアクセスが必要な場合は、呼び出し元に証拠を要求します。

適用対象

XmlSecureResolver(XmlResolver, String)

XmlResolver と URL を指定して、XmlSecureResolver クラスの新しいインスタンスを初期化します。

public:
 XmlSecureResolver(System::Xml::XmlResolver ^ resolver, System::String ^ securityUrl);
public XmlSecureResolver (System.Xml.XmlResolver resolver, string? securityUrl);
public XmlSecureResolver (System.Xml.XmlResolver resolver, string securityUrl);
new System.Xml.XmlSecureResolver : System.Xml.XmlResolver * string -> System.Xml.XmlSecureResolver
Public Sub New (resolver As XmlResolver, securityUrl As String)

パラメーター

resolver
XmlResolver

XmlSecureResolver によってラップされた XML リゾルバー。

securityUrl
String

基になる XmlResolver に適用される PermissionSet の作成に使用される URL。 XmlSecureResolver は、基になる XmlResolverGetEntity(Uri, String, Type) を呼び出す前に、作成された PermissionSetPermitOnly() を呼び出します。

この例では、コンストラクターを XmlSecureResolver(XmlResolver, String) 使用して、 XmlSecureResolver ローカル イントラネット サイトにのみアクセスできるオブジェクトを作成します。

XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(), "http://myLocalSite/");
Dim myResolver As New XmlSecureResolver(New XmlUrlResolver(), "http://myLocalSite/")

注釈

重要

.NET Framework共通言語ランタイム (CLR) で実行されるコードと、Microsoft SQL Server 2005 内に統合された CLR で実行されるコードについては、セキュリティ インフラストラクチャに違いがあります。 これにより、.NET Framework CLR 用に開発されたコードが、SQL Server統合 CLR で使用される場合に動作が異なる場合があります。 これらの違いの 1 つは、URL に基づく証拠がある場合 (つまり、メソッドまたはコンストラクターを使用する場合) にクラスにCreateEvidenceForUrl影響XmlSecureResolverしますXmlSecureResolver(XmlResolver, String)。 SQL Server統合 CLR のポリシー解決メカニズムでは、その情報はUrlZone使用されません。 代わりに、アセンブリの読み込み時にサーバーが追加する GUID に基づいてアクセス許可を付与します。 SQL Server統合 CLR で使用XmlSecureResolverする場合は、指定したを使用して必要な証拠を直接指定しますPermissionSet

適用対象