Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. |
Traducción
Original
|
ServiceAuthorizationManager (Clase)
Proporciona la comprobación de acceso de autorización para las operaciones del servicio.
Ensamblado: System.ServiceModel (en System.ServiceModel.dll)
El tipo ServiceAuthorizationManager expone los siguientes miembros.
| Nombre | Descripción | |
|---|---|---|
|
ServiceAuthorizationManager | Inicializa una instancia nueva de la clase ServiceAuthorizationManager. |
| Nombre | Descripción | |
|---|---|---|
|
CheckAccess(OperationContext) | Comprueba la autorización para el contexto de la operación determinado. |
|
CheckAccess(OperationContext, Message) | Comprueba la autorización para el contexto de la operación determinado cuando se requiere el acceso a un mensaje. |
|
CheckAccessCore | Comprueba la autorización para el contexto de la operación determinado basándose en la evaluación de la directiva predeterminada. |
|
Equals(Object) | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). |
|
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). |
|
GetAuthorizationPolicies | Obtiene el conjunto de directivas que participan en la evaluación de la directiva. |
|
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). |
|
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). |
|
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). |
|
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
Esta clase es responsable de evaluar todas las directivas (reglas que definen lo que un usuario puede hacer), comparar las directivas con las notificaciones realizadas por un cliente, establecer el AuthorizationContext resultante en ServiceSecurityContext y proporcionar la decisión de autorización sobre si se debe permitir o denegar el acceso a una operación del servicio determinada para el autor de una llamada.
El método CheckAccessCore es llamado por la infraestructura cada vez que se realiza un intento de obtener acceso a un recurso. El método devuelve true o false para permitir o denegar el acceso, respectivamente.
ServiceAuthorizationManager forma parte de la infraestructura Modelo de identidad. El Modelo de identidad le permite crear directivas de autorización personalizadas y esquemas de autorización personalizados. Para obtener más información sobre cómo funciona el Modelo de identidad, vea Claims and Authorization.
Autorización personalizada
Esta clase no realiza ninguna autorización y permite que los usuarios tengan acceso a todas las operaciones del servicio. Para proporcionar una autorización más restrictiva, debe crear un administrador de autorización personalizado que compruebe las directivas personalizadas. Para ello, herede de esta clase e invalide el método CheckAccessCore. Especifique la instancia de la clase derivada a través de la propiedad ServiceAuthorizationManager.
En CheckAccessCore, la aplicación puede utilizar el objeto OperationContext para tener acceso a la identidad del autor de la llamada (ServiceSecurityContext).
Obteniendo la propiedad IncomingMessageHeaders, que devuelve un objeto MessageHeaders, la aplicación puede tener acceso al servicio (To) y a la operación (Action).
Obteniendo la propiedad RequestContext, que devuelve un objeto RequestContext, la aplicación puede obtener acceso el mensaje de solicitud completo (RequestMessage) y tomar la decisión de la autorización en consecuencia.
Vea un ejemplo en How To: Create a Custom AuthorizationManager for a Service.
Para crear las directivas de autorización personalizadas, implemente la clase IAuthorizationPolicy. Vea un ejemplo en How To: Create a Custom Authorization Policy.
Para crear una demanda personalizada, utilice la clase Claim. Vea un ejemplo en How To: Create a Custom Claim. Para comparar las notificaciones personalizadas, debe comparar notificaciones, tal y como se muestra en How To: Compare Claims.
Para obtener más información, veaCustom Authorization.
Puede establecer el tipo de un administrador de autorización personalizado utilizando <serviceAuthorization> element en un archivo de configuración de la aplicación cliente.
En el ejemplo de código siguiente se muestra una clase llamada MyServiceAuthorizationManager que hereda de ServiceAuthorizationManager y reemplaza el método CheckAccessCore.
public class MyServiceAuthorizationManager : ServiceAuthorizationManager { protected override bool CheckAccessCore(OperationContext operationContext) { // Extract the action URI from the OperationContext. Match this against the claims // in the AuthorizationContext. string action = operationContext.RequestContext.RequestMessage.Headers.Action; // Iterate through the various claim sets in the AuthorizationContext. foreach(ClaimSet cs in operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets) { // Examine only those claim sets issued by System. if (cs.Issuer == ClaimSet.System) { // Iterate through claims of type "http://www.contoso.com/claims/allowedoperation". foreach (Claim c in cs.FindClaims("http://www.contoso.com/claims/allowedoperation", Rights.PossessProperty)) { // If the Claim resource matches the action URI then return true to allow access. if (action == c.Resource.ToString()) return true; } } } // If this point is reached, return false to deny access. return false; } }
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.