ServiceAuthorizationManager Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 seguinte mostra uma classe nomeada MyServiceAuthorizationManager que herda de e ServiceAuthorizationManager sobrepõe 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
Observações
Esta classe é responsável por avaliar todas as políticas (regras que definem o que um utilizador pode fazer), comparar as políticas com reivindicações feitas por um cliente, definir o resultado AuthorizationContext para , ServiceSecurityContexte fornecer a decisão de autorização sobre permitir ou negar o acesso a uma dada operação de serviço para um chamador.
O método CheckAccessCore é chamado pela infraestrutura Windows Communication Foundation (WCF) sempre que se tenta aceder a um recurso. O método retorna true ou false permite ou recusa o acesso, respetivamente.
Faz ServiceAuthorizationManager parte da infraestruturado Modelo de Identidade WCF. O Identity Model permite-lhe criar políticas de autorização personalizadas e esquemas de autorização personalizados. Para mais informações sobre como funciona o Modelo de Identidade, consulte Gestão de Reclamações e Autorização com o Modelo de Identidade.
Autorização personalizada
Esta classe não realiza qualquer autorização e permite aos utilizadores aceder a todas as operações do serviço. Para fornecer autorizações mais restritivas, deve criar um gestor de autorizações personalizado que verifique políticas personalizadas. Para isso, herda desta classe e sobrepõe o CheckAccessCore método. Especifique a instância da classe derivada através da ServiceAuthorizationManager propriedade.
Em CheckAccessCore, a aplicação pode usar o OperationContext objeto para aceder à identidade do chamador (ServiceSecurityContext).
Ao obter a IncomingMessageHeaders propriedade que devolve um MessageHeaders objeto, a aplicação pode aceder ao serviço (To), e à operação (Action).
Ao obter a RequestContext propriedade, que devolve um RequestContext objeto, a aplicação pode aceder a toda a mensagem de pedido (RequestMessage) e executar a decisão de autorização em conformidade.
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 um exemplo, veja Como: Criar uma Política de Autorização Personalizada.
Para criar uma reivindicação personalizada, use a Claim classe. Para um exemplo, veja Como: Criar uma Reivindicação Personalizada. Para comparar reclamações personalizadas, deve comparar reclamações, conforme mostrado em Como: Comparar Reclamações.
Para mais informações, consulte Autorização Personalizada.
Pode definir o tipo de gestor de autorizações personalizado usando o <serviceAuthorization> num ficheiro de configuração de uma aplicação cliente.
Construtores
| Name | Description |
|---|---|
| ServiceAuthorizationManager() |
Inicializa uma nova instância da ServiceAuthorizationManager classe. |
Métodos
| Name | Description |
|---|---|
| CheckAccess(OperationContext, Message) |
Verifica a autorização para o contexto operacional dado quando é necessário acesso a uma mensagem. |
| CheckAccess(OperationContext) |
Verifica a autorização para o contexto operacional dado. |
| CheckAccessCore(OperationContext) |
Verifica a autorização para o contexto operacional dado com base na avaliação padrão da política. |
| 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 na avaliação de políticas. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |