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.CheckAccessCore (Método)
Comprueba la autorización para el contexto de la operación determinado basándose en la evaluación de la directiva predeterminada.
Ensamblado: System.ServiceModel (en System.ServiceModel.dll)
Parámetros
- operationContext
- Tipo: System.ServiceModel.OperationContext
OperationContext para la solicitud de la autorización actual.
Valor devuelto
Tipo: System.Booleantrue si se concede el acceso; de lo contrario, false.El valor predeterminado es true.
ServiceSecurityContext generalmente es el resultado de la evaluación de la directiva predeterminada.
Reemplace este método para proporcionar decisiones de autorización personalizadas.
Este método se puede utilizar para tomar decisiones de autorización basadas en los conjuntos de notificaciones que se deducen a partir de los tokens de entrada o se agregan a través de las directivas de autorización externas. También puede tomar decisiones de autorización basadas en las propiedades del mensaje entrante: por ejemplo, el encabezado de acción.
En este método, la aplicación puede utilizar el parámetro operationContext para tener acceso a la identidad del llamador (ServiceSecurityContext). Al devolver el objeto RequestContext de la propiedad RequestContext, la aplicación puede tener acceso al mensaje de solicitud completo (RequestMessage). Al devolver el objeto MessageHeaders de la propiedad IncomingMessageHeaders, la aplicación puede tener acceso a la dirección URL del servicio (To) y a la operación (Action). Con esta información, la aplicación puede tomar la decisión de la autorización en consecuencia.
Las demandas realizadas por un usuario se encuentran en el ClaimSet devuelto por la propiedad ClaimSets de AuthorizationContext. La propiedad ServiceSecurityContext devuelve el AuthorizationContext actual de la clase OperationContext.
En el siguiente ejemplo de código se muestra una invalidación del método CheckAccessCore.
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; }
Para obtener otro ejemplo, vea How To: Create a Custom AuthorizationManager for a Service.
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.