Compartir a través de


ServiceAuthorizationManager Clase

Definición

Proporciona la comprobación de acceso de autorización para las operaciones del servicio.

public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
Herencia
ServiceAuthorizationManager

Ejemplos

En el ejemplo de código siguiente se muestra una clase denominada MyServiceAuthorizationManager que hereda de ServiceAuthorizationManager e invalida 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;
  }
}

Public Class MyServiceAuthorizationManager
    Inherits ServiceAuthorizationManager
    
    Protected Overrides Function CheckAccessCore(ByVal operationContext As OperationContext) As Boolean 
        ' Extract the action URI from the OperationContext. Match this against the claims.
        ' in the AuthorizationContext.
        Dim action As String = operationContext.RequestContext.RequestMessage.Headers.Action
        
        ' Iterate through the various claimsets in the AuthorizationContext.
        Dim cs As ClaimSet
        For Each cs In  operationContext.ServiceSecurityContext.AuthorizationContext.ClaimSets
            ' Examine only those claim sets issued by System.
            If cs.Issuer Is ClaimSet.System Then
                ' Iterate through claims of type "http://www.contoso.com/claims/allowedoperation".
                Dim c As Claim
                For Each 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() Then
                        Return True
                    End If
                Next c
            End If
        Next cs 
        ' If this point is reached, return false to deny access.
        Return False
    
    End Function 
End Class

Comentarios

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.

La CheckAccessCore infraestructura de Windows Communication Foundation (WCF) llama al método cada vez que se realiza un intento de acceder a un recurso. El método devuelve true o false para permitir o denegar el acceso, respectivamente.

forma ServiceAuthorizationManager parte de la infraestructura delmodelo de identidad de WCF. 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, consulte Administración de notificaciones y autorización con el modelo de identidad.

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.

Para obtener un ejemplo, vea How to: Create a Custom Authorization Manager for a Service.

Para crear las directivas de autorización personalizadas, implemente la clase IAuthorizationPolicy. Para obtener un ejemplo, vea Cómo: Crear una directiva de autorización personalizada.

Para crear una demanda personalizada, utilice la clase Claim. Para obtener un ejemplo, vea Cómo: Crear una notificación personalizada. Para comparar notificaciones personalizadas, debe comparar notificaciones, como se muestra en Cómo: Comparar notificaciones.

Para obtener más información, consulte Autorización personalizada.

Puede establecer el tipo de un administrador de autorización personalizado mediante serviceAuthorization<> en un archivo de configuración de aplicación cliente.

Constructores

ServiceAuthorizationManager()

Inicializa una nueva instancia de la clase ServiceAuthorizationManager.

Métodos

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(OperationContext)

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 especificado es igual que el objeto actual.

(Heredado de Object)
GetAuthorizationPolicies(OperationContext)

Obtiene el conjunto de directivas que participan en la evaluación de la directiva.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también