ServiceAuthorizationManager Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece verificação de acesso de autorização para operações de serviço.
public ref class ServiceAuthorizationManager
public class ServiceAuthorizationManager
type ServiceAuthorizationManager = class
Public Class ServiceAuthorizationManager
- Herança
-
ServiceAuthorizationManager
Exemplos
O exemplo a seguir mostra uma classe nomeada MyServiceAuthorizationManager
que herda do ServiceAuthorizationManager método e substitui o CheckAccessCore método.
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
Comentários
Essa classe é responsável por avaliar todas as políticas (regras que definem o que um usuário tem permissão para fazer), comparar as políticas com declarações feitas por um cliente, definir o resultado AuthorizationContext para o ServiceSecurityContext, e fornecer a decisão de autorização se deseja permitir ou negar acesso a uma determinada operação de serviço para um chamador.
O CheckAccessCore método é chamado pela infraestrutura do WCF (Windows Communication Foundation) sempre que uma tentativa de acessar um recurso é feita. O método retorna true
ou false
permite ou nega o acesso, respectivamente.
Faz ServiceAuthorizationManager parte da infraestrutura do Modelo de Entidade WCFIdentity . O Modelo de Identidade permite que você crie políticas de autorização personalizadas e esquemas de autorização personalizados. Para obter mais informações sobre como o Modelo de Identidade funciona, consulte Como gerenciar declarações e autorização com o modelo de identidade.
Autorização personalizada
Essa classe não executa nenhuma autorização e permite que os usuários acessem todas as operações de serviço. Para fornecer uma autorização mais restritiva, você deve criar um gerenciador de autorização personalizado que verifique as políticas personalizadas. Para fazer isso, herde dessa classe e substitua o CheckAccessCore método. Especifique a instância da classe derivada por meio da ServiceAuthorizationManager propriedade.
In CheckAccessCore, o aplicativo pode usar o OperationContext objeto para acessar a identidade do chamador (ServiceSecurityContext).
Ao obter a IncomingMessageHeaders propriedade, que retorna um MessageHeaders objeto, o aplicativo pode acessar o serviço (To) e a operação (Action).
Ao obter a RequestContext propriedade, que retorna um RequestContext objeto, o aplicativo pode acessar toda a mensagem de solicitação (RequestMessage) e executar a decisão de autorização adequadamente.
Para obter um exemplo, consulte Como criar um Gerenciador de Autorização Personalizado para um Serviço.
Para criar políticas de autorização personalizadas, implemente a IAuthorizationPolicy classe. Para obter um exemplo, consulte Como criar uma política de autorização personalizada.
Para criar uma declaração personalizada, use a Claim classe. Para obter um exemplo, consulte Como criar uma declaração personalizada. Para comparar declarações personalizadas, você deve comparar declarações, conforme mostrado em Como comparar declarações.
Para obter mais informações, consulte Autorização Personalizada.
Você pode definir o tipo de um gerenciador de autorização personalizado usando o <serviceAuthorization> em um arquivo de configuração de aplicativo cliente.
Construtores
ServiceAuthorizationManager() |
Inicializa uma nova instância da classe ServiceAuthorizationManager. |
Métodos
CheckAccess(OperationContext) |
Verifica a autorização para o contexto de operação fornecido. |
CheckAccess(OperationContext, Message) |
Verifica a autorização para o contexto de operação fornecido quando o acesso a uma mensagem é necessário. |
CheckAccessCore(OperationContext) |
Verifica a autorização para um determinado contexto de operação com base na avaliação de política padrão. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetAuthorizationPolicies(OperationContext) |
Obtém o conjunto de políticas que participam de avaliação de políticas. |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |