Leer en inglés

Compartir a través de


HostSecurityManager Clase

Definición

Permite el control y la personalización del comportamiento de la seguridad para los dominios de aplicaciones.

public class HostSecurityManager
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class HostSecurityManager
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
[System.Security.SecurityCritical]
public class HostSecurityManager
Herencia
HostSecurityManager
Atributos

Ejemplos

En el ejemplo siguiente se muestra una implementación muy sencilla de .HostSecurityManager

// To replace the default security manager with MySecurityManager, add the 
// assembly to the GAC and call MySecurityManager in the
// custom implementation of the AppDomainManager.

using System;
using System.Collections;
using System.Net;
using System.Reflection;
using System.Security;
using System.Security.Permissions;
using System.Security.Policy;
using System.Security.Principal;
using System.Threading;
using System.Runtime.InteropServices;
using System.Runtime.Hosting;

[assembly: System.Security.AllowPartiallyTrustedCallersAttribute()]
namespace MyNamespace
{
    [Serializable()]
    [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure)]
    public class MySecurityManager : HostSecurityManager
    {
        public MySecurityManager()
        {
            Console.WriteLine(" Creating MySecurityManager.");
        }

        private HostSecurityManagerOptions hostFlags = HostSecurityManagerOptions.HostDetermineApplicationTrust |
                                                   HostSecurityManagerOptions.HostAssemblyEvidence;
        public override HostSecurityManagerOptions Flags
        {
            get
            {
                return hostFlags;
            }
        }

        public override Evidence ProvideAssemblyEvidence(Assembly loadedAssembly, Evidence evidence)
        {
            Console.WriteLine("Provide assembly evidence for: " + (loadedAssembly == null ? "Unknown" : loadedAssembly.ToString()) + ".");
            if (evidence == null)
                return null;

            evidence.AddAssemblyEvidence(new CustomEvidenceType());
            return evidence;
        }
        public override Evidence ProvideAppDomainEvidence(Evidence evidence)
        {
            Console.WriteLine("Provide evidence for the " + AppDomain.CurrentDomain.FriendlyName + " AppDomain.");
            if (evidence == null)
                return null;

            evidence.AddHostEvidence(new CustomEvidenceType());
            return evidence;
        }

        [SecurityPermissionAttribute(SecurityAction.Demand, Execution = true)]
        [SecurityPermissionAttribute(SecurityAction.Assert, Unrestricted = true)]
        public override ApplicationTrust DetermineApplicationTrust(Evidence applicationEvidence, Evidence activatorEvidence, TrustManagerContext context)
        {
            if (applicationEvidence == null)
                throw new ArgumentNullException("applicationEvidence");

            // Get the activation context from the application evidence.
            // This HostSecurityManager does not examine the activator evidence
            // nor is it concerned with the TrustManagerContext;
            // it simply grants the requested grant in the application manifest.

            IEnumerator enumerator = applicationEvidence.GetHostEnumerator();
            ActivationArguments activationArgs = null;
            while (enumerator.MoveNext())
            {
                activationArgs = enumerator.Current as ActivationArguments;
                if (activationArgs != null)
                    break;
            }

            if (activationArgs == null)
                return null;

            ActivationContext activationContext = activationArgs.ActivationContext;
            if (activationContext == null)
                return null;

            ApplicationTrust trust = new ApplicationTrust(activationContext.Identity);
            ApplicationSecurityInfo asi = new ApplicationSecurityInfo(activationContext);
            trust.DefaultGrantSet = new PolicyStatement(asi.DefaultRequestSet, PolicyStatementAttribute.Nothing);
            trust.IsApplicationTrustedToRun = true;
            return trust;
        }
    }
    [Serializable()]
    public class CustomEvidenceType : EvidenceBase
    {
        public CustomEvidenceType() { }

        public override string ToString()
        {
            return "CustomEvidenceType";
        }
    }
}

Comentarios

Al crear un nuevo AppDomain, Common Language Runtime consulta la AppDomainManager presencia de un HostSecurityManagerobjeto , que participa en la toma de decisiones de seguridad para .AppDomain Los proveedores de host deben implementar un administrador de seguridad de host que herede de la HostSecurityManager clase .

Notas a los desarrolladores de herederos

Se llama a algunos miembros de un HostSecurityManager objeto cada vez que se carga un ensamblado, ya sea implícita o explícitamente. Los ProvideAssemblyEvidence(Assembly, Evidence) métodos y ProvideAppDomainEvidence(Evidence) no deben cargar ningún ensamblado, ya que, al hacerlo, se llamarán de forma recursiva a los miembros de .HostSecurityManager Para evitar referencias circulares, debe crear nuevas instancias de clases que puedan hacer que los ensamblados se carguen, ya sea implícita o explícitamente, en el constructor de una clase que deriva de HostSecurityManager.

Constructores

HostSecurityManager()

Inicializa una nueva instancia de la clase HostSecurityManager.

Propiedades

DomainPolicy
Obsoletos.

Si se reemplaza en una clase derivada, obtiene la directiva de seguridad para el dominio de aplicación actual.

Flags

Obtiene el marcador que representa los componentes de directiva de seguridad de interés para el host.

Métodos

DetermineApplicationTrust(Evidence, Evidence, TrustManagerContext)

Determina si se debe ejecutar una aplicación.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GenerateAppDomainEvidence(Type)

Solicita un tipo de evidencia concreto para el dominio de aplicación.

GenerateAssemblyEvidence(Type, Assembly)

Solicita un tipo de evidencia concreto para el ensamblado.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetHostSuppliedAppDomainEvidenceTypes()

Determina qué tipos de evidencia puede proporcionar el host para el dominio de aplicación, si se solicita.

GetHostSuppliedAssemblyEvidenceTypes(Assembly)

Determina qué tipos de evidencia puede proporcionar el host para el ensamblado, si se solicita.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ProvideAppDomainEvidence(Evidence)

Proporciona la evidencia del dominio de aplicación para un ensamblado que se está cargando.

ProvideAssemblyEvidence(Assembly, Evidence)

Proporciona la evidencia de ensamblado para un ensamblado que se está cargado.

ResolvePolicy(Evidence)
Obsoletos.

Determina qué permisos se conceden al código según la evidencia especificada.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Producto Versiones
.NET 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10