Partilhar via


XmlSecureResolver Construtores

Definição

Inicializa uma nova instância da classe XmlSecureResolver.

Sobrecargas

XmlSecureResolver(XmlResolver, PermissionSet)

Inicializa uma nova instância da classe XmlSecureResolver com o XmlResolver e PermissionSet especificados.

XmlSecureResolver(XmlResolver, Evidence)

Inicializa uma nova instância da classe XmlSecureResolver com o XmlResolver e Evidence especificados.

XmlSecureResolver(XmlResolver, String)

Inicializa uma nova instância da classe XmlSecureResolver com o XmlResolver e a URL fornecida.

Comentários

Os três construtores fornecem três tipos de restrições de acesso:

Consulte os tópicos de referência do construtor para obter exemplos desses tipos de restrições.

XmlSecureResolver(XmlResolver, PermissionSet)

Inicializa uma nova instância da classe XmlSecureResolver com o XmlResolver e PermissionSet especificados.

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)

Parâmetros

resolver
XmlResolver

O resolvedor XML que é encapsulado pelo XmlSecureResolver.

permissionSet
PermissionSet

O conjunto de permissões a ser aplicado ao XmlResolver subjacente. O XmlSecureResolver chama o método PermitOnly() na permissão definida antes de chamar o método GetEntity(Uri, String, Type) no resolvedor XML subjacente.

Exemplos

O exemplo a seguir constrói um XmlSecureResolver objeto usando um conjunto de permissões personalizado.

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

Confira também

Aplica-se a

XmlSecureResolver(XmlResolver, Evidence)

Inicializa uma nova instância da classe XmlSecureResolver com o XmlResolver e Evidence especificados.

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)

Parâmetros

resolver
XmlResolver

O resolvedor XML que é encapsulado pelo XmlSecureResolver.

evidence
Evidence

A evidência a ser usada para criar o PermissionSet que será aplicado ao XmlResolver subjacente. O XmlSecureResolver chama o método PermitOnly() criado PermissionSet antes de chamar GetEntity(Uri, String, Type) no XmlResolver subjacente.

Comentários

Aqui estão alguns cenários possíveis e o tipo de evidência a ser fornecida para cada cenário:

  • Se você estiver trabalhando em um ambiente totalmente confiável, use o assembly para criar a evidência:

    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)
    
  • Se você estiver trabalhando em um ambiente semi-confiável, terá código ou dados provenientes de uma fonte externa e sabe a origem da origem externa e tem um URI verificável, use o URI para criar a evidência:

    
    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)
    
  • Se você estiver trabalhando em um ambiente semi-confiável e tiver código ou dados provenientes de uma fonte externa, mas também não souber a origem da fonte externa:

    Defina o parâmetro de evidence a null. Isso não permite sem acesso a recursos.

    - ou -

    Se seu aplicativo requer algum acesso aos recursos, solicite a evidência do chamador.

Aplica-se a

XmlSecureResolver(XmlResolver, String)

Inicializa uma nova instância da classe XmlSecureResolver com o XmlResolver e a URL fornecida.

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)

Parâmetros

resolver
XmlResolver

O resolvedor XML que é encapsulado pelo XmlSecureResolver.

securityUrl
String

A URL usada para criar o PermissionSet que será aplicado ao XmlResolver subjacente. O XmlSecureResolver chama PermitOnly() no PermissionSet criado antes de chamar GetEntity(Uri, String, Type) no XmlResolver subjacente.

Exemplos

Este exemplo usa o XmlSecureResolver(XmlResolver, String) construtor para criar um XmlSecureResolver objeto que tem permissão para acessar apenas o site da intranet local.

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

Comentários

Importante

Há diferenças na infraestrutura de segurança para o código em execução no CLR (common language runtime) .NET Framework e para o código em execução no CLR que é integrado no Microsoft SQL Server 2005. Isso pode levar a casos em que o código desenvolvido para o CLR .NET Framework opera de forma diferente quando usado no CLR integrado SQL Server. Uma dessas diferenças afeta a XmlSecureResolver classe quando você tem evidências baseadas em uma URL (ou seja, quando você usa o CreateEvidenceForUrl método ou o XmlSecureResolver(XmlResolver, String) construtor). O mecanismo de resolução de política do CLR integrado do SQL Server não usa as informações ou Zone as Url informações. Em vez disso, ele concede permissões com base no GUID que o servidor adiciona quando os assemblies são carregados. Ao usar o XmlSecureResolver CLR integrado no SQL Server, forneça todas as evidências necessárias diretamente usando uma especificadaPermissionSet.

Aplica-se a